我有一個mod_rewrite(主要是感謝堆棧成員奧拉夫),從 index.php?URL=pages/the-page.php
簡單地the-page
重定向。問題是,當請求的頁面不是直接在pages
(即,pages/sub
)中時,它會重定向我的.css和.js,這是不好的。Mod_rewrite不包括子目錄
我試圖做到的是:
- 僅改寫在
pages
文件夾中的文件,而是包括它的所有subdirectores。
重要的是它永遠不會重寫files
文件夾的URL。
下面的代碼:
Options +FollowSymlinks
RewriteEngine on
# prevent endless loop
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule^- [L]
# redirect the client
RewriteCond %{QUERY_STRING} URL=pages/(.+?)\.php
RewriteRule ^index\.php$ /gr/%1? [R,L]
# exclude rewriting all files located in /gr/files
RewriteCond %{REQUEST_URI} !^/gr/files/
# rewrite to real content
RewriteRule ^.*$ /gr/index.php?URL=pages/$0.php [L]
我花了無數的時間與此代碼的戰鬥。即使較小的更改也會將其引發至404或500錯誤。
它也殺死外部鏈接使它.com/www而不是適當的地址,這是一個問題。
我不知道我的理解,但可能不包括所有真正的文件'RewriteCond%{REQUEST_FILENAME}!-f'可能會有所幫助。 – 2013-04-11 06:06:15