3 回答

TA貢獻(xiàn)1805條經(jīng)驗 獲得超10個贊
錯誤與此有關(guān) RewriteRule
RewriteRule /sub/directory/index\.php - [L]
請參閱匹配什么?
在每個目錄的上下文(目錄和 .htaccess)中,模式只匹配部分路徑,例如“ /app1/index.html ”的請求可能會導(dǎo)致與“ app1/index.html ”或“index”的比較.html”取決于 RewriteRule 的定義位置。
和“每目錄重寫”:
刪除的前綴總是以斜杠結(jié)尾,這意味著匹配發(fā)生在一個從來沒有前導(dǎo)斜杠的字符串上。因此,帶有 ^/ 的模式永遠(yuǎn)不會在每個目錄的上下文中匹配。
這意味著,前導(dǎo)斜杠會阻止模式匹配。將其更改為
RewriteRule ^sub/directory/index\.php - [L]
將解決問題。
在500內(nèi)部服務(wù)器錯誤來自于第二規(guī)則(在組合與非匹配的第一規(guī)則)。
RewriteRule ^.*$ /sub/directory/index\.php
這會將任何請求重寫為/sub/directory/index.php
,然后將再次重寫為/sub/directory/index.php
,依此類推,直到重寫模塊放棄并顯示“重定向過多”錯誤或類似錯誤。

TA貢獻(xiàn)1811條經(jīng)驗 獲得超5個贊
另一種方法,您可以使用此代碼:(注釋第二行和第三行以接受 url 中的偶數(shù)文件和目錄)
重寫引擎開啟
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
重寫規(guī)則 ^(.*)$ /index.php?path=$1 [NC,L,QSA]

TA貢獻(xiàn)1873條經(jīng)驗 獲得超9個贊
語法錯誤,在第二個匹配(不是最后一個)之后另外重新匹配第一個規(guī)則。
任何請求 -> /sub/directory/index.php -> /sub/directory/index.php - [L]
<IfModule mod_rewrite.c>
RewriteEngine On
# RewriteRule /sub/directory/index\.php - [L]
RewriteRule ^(.*)$ /sub/directory/index.php [L]
</IfModule>
我的另一個建議(index.php 是目錄索引文件,在請求目錄時是第一個):
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^sub/directory/(.*)$ /sub/directory/ [R=301,L]
</IfModule>
- 3 回答
- 0 關(guān)注
- 207 瀏覽
添加回答
舉報