所以我一直堅持這一點,它或多或少把我的項目頂部。htaccess不重定向url
剛剛開始一項新工作,目前的任務是爲我們啓動的新項目創建一個API系統。它基於WordPress的修改版本,我的目標是接受/ contrib/api的任何請求,並將其直接轉發到我設置的文件中,以便對傳入網址進行排序並進行相應的重定向。
這是我目前有:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /contrib/
RewriteCond %{REQUEST_URI} ^/api/
RewriteRule ^/content/apis/apis\.php$ - [L]
RewriteRule ^index\.php$ - [L]
# uploaded files -- no longer needed since we're serving files directly via apache
# RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]
# add a trailing slash to /network and /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin/network$ $1wp-admin/network/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule^- [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) wordpress/$2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ wordpress/$2 [L]
RewriteRule . /contrib/index.php [L]
</IfModule>
這一切都在這裏我面前,除了靠近頂部:
RewriteCond %{REQUEST_URI} ^/api/
RewriteRule ^/content/apis/apis\.php$ - [L]
我的目標,如前所述,是採取從/任何要求contrib/api /並將其重定向到我的文件而不是繼續。相反,它似乎跳過並繼續並指向wp-admin(在我認爲的重定向之後)。無論如何,似乎我的命令沒有被抓住,我不知道爲什麼。
我認爲這些命令是先來處理的,但是如果它繼續下去,將我的代碼移動到最後使它工作?
我知道這是一件很容易測試的事情,但我希望能夠了解我在做什麼/做錯了什麼,以及我還沒有訪問服務器以實際上傳/測試代碼沒有經過我的老闆,我想了2周,可能不是一個好主意,要求我的老闆每5分鐘測試一次代碼,呵呵:(
編輯:按照Bob Vale的通知,修復了路徑問題。
好吧,實際上,它應該是 '的RewriteCond%{REQUEST_URI} ^/API/ 重寫規則^ /的contrib /apis/apis\.php$ - [L]' 我搞砸了文件結構。 但仍然,它不應該試圖轉發到文件,但然後失敗,因爲它無法找到該文件(在我的不正確的代碼)? 此外,是不是RewriteCond必要?我只想轉發到API,如果URL調用它,其他一切應該移動到Wordpress如下? – RhoVisions
@RhoVisions nope,你的規則停止,因爲路徑不匹配,當條件不滿足,它停在那裏,什麼都不做。 – Prix
@RhoVisions如果'RewriteRule'已經定義了我更新的答案所做的匹配,'RewriteCond'是不必要的。如果目標php文件也位於同一Url下,並且您需要cond明確排除它,那麼您只能真正使用rewritecond。 –