我有一個託管在其上的多個域的共享主機。在我的主機的根文件夾中存在一個.htaccess(比如說是htaccess1)。在HT1代碼:多個.htaccess文件互相沖突
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?mydomain.com$ [NC]
RewriteCond %{REQUEST_URI} !^/mydomain/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /mydomain/$1
RewriteCond %{HTTP_HOST} ^(www.)?mydomain.com$ [NC]
RewriteRule ^(/)?$ mydomain/index.php [L]
這些規則存在,只有擁有www.mydomain.com
所使用的網址mydomain
文件夾中的所有文件。我是新的URL重寫,所以我不明白每行的意義。另一個.htaccess(如htaccess2)文件存在於mydomain
文件夾中。代碼是htaccess2是:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9]+)?/$ try.php?id=$1
RewriteRule ^([0-9]+)?$ try.php?id=$1
RewriteRule ^post/([0-9]+)?/$ post.php?id=$1
RewriteRule ^post/([0-9]+)?$ post.php?id=$1
在這個文件中,行6,7工作正常,並重定向與數值參數要求try.php
但線8,9不工作,給一個404頁沒有發現錯誤,確切的錯誤字符串是:
在此服務器上找不到請求的URL/mydomain/post/1233445。
我懷疑htaccess1的某些作用是否造成這個問題,因爲我在第8,9行嘗試了許多正則表達式的變體。請幫忙。
'RewriteCond'按照第一個'RewriteRule'工作,除非您使用類似skip的跳過來跳過失敗的匹配。 – 2013-04-30 18:40:33