0
我有我所有的重寫規則設置和在.htaccess中工作,但我需要將所有不匹配的規則重定向到一個共同的地方。mod_rewrite將所有不匹配的規則重定向到一個公共文件
下面是規則:
# add trailing slash
RewriteCond %{DOCUMENT_ROOT} -d
RewriteRule ^([^.]*[^/])$ $1/ [R]
# redirect directories to old site if it exists
RewriteCond %{DOCUMENT_ROOT}/old_site/$0 -d
RewriteRule ^(.*) old_site/$1 [NC,QSA,L]
#redirect files to old site if they exist
RewriteCond %{DOCUMENT_ROOT}/old_site/$0 -f
RewriteRule ^(.*) old_site/$1 [NC,QSA,L]
這個偉大的工程,而是試圖重定向流量的其餘部分(全部無與倫比的規則),剛剛超過的index.php寫入上述所有的規則:
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
如何確保這部分只有在沒有其他任何東西(我猜除了尾部斜線部分)匹配的情況下才能執行?
編輯:@喬恩每林 正如我已經改變了過去的三線
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php
現在適用於一切,但不以斜線結束目錄。我不能將[L]放在第一條規則上,因爲我需要將它重新寫入其他目錄。
謝謝我已經添加了規則,但它不適用於不以斜線結尾的目錄,第一條規則將斜線添加到沒有點和斜線的內容中,所以它贏得了'將index.php重寫爲index.php /我已經更改爲REQUEST_FILENAME,但它沒有區別。 – keeg
您是否嘗試過使用'DirectorySlash on'? –
畢竟你是對的,因爲我是重定向的,我需要在最後的L現在它工作完美! – keeg