我通過index.php發送每個請求,除了我的博客子目錄中的頁面。我已經能夠在我的父文件夾中使用mod_rewrite來做到這一點,爲什麼這個mod_rewrite沒有重新定向?
RewriteCond %{REQUEST_URI} !^/blog
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
]
不過,我也想將請求發送到我的博客文件夾,如果他們有以下形式:
文檔/一些文件。
我已經試過:
RewriteRule ^/documentation/(.+)$ https://www.some_domain.com/blog/documentation/$1
但看起來像我的請求沒有得到在這種情況下,發到博客上的文件夾。我的全代碼如下:
RewriteEngine On
#redirect to index.php as appropriate
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^/documentation/(.+)$ https://www.some_domain.com/blog/documentation/$1
RewriteCond %{REQUEST_URI} !^/blog
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
編輯:
我使用的@下面Rijul的建議和之前的RewriteCond重寫規則的移動後,它的工作原理我所希望的一個稍作修改的版本。換句話說,重寫文檔會重寫博客子文件夾。而且,所有其他請求都會通過我的index.php文件。在這一點上,我想明白爲什麼。
RewriteEngine On
RewriteRule ^documentation/?(.*)$ /blog/documentation/$1 [R=301,L]
#redirect to index.php as appropriate
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
它是一半的工作!現在,如果我把文檔/它的工作很好。但是,現在它不會執行我的任何「非文檔」重定向。例如,我不相信它曾經在「一般」情況下成爲最後一行。 – Eric
您能否提供一個無法正常工作的示例url及其預期結果 –
例如,www.my_domain.com/authenticate/show-user-login-form應該轉到我的登錄頁面(它沒有上面的代碼)。或者,像www.my_domain.com這樣基本的東西應該通過index.php路由並顯示主頁。兩者都沒有發生。 – Eric