我在嘗試配置託管PHP應用程序的託管爲api.myapp.com
的APACHE虛擬服務器。mod_rewrite API路徑
PHP應用程序的途徑是
/* -> HTML
/api/* -> JSON
所以相同的Apache實例也舉辦app.myapp.com
,剛剛擔任了HTML。
app.myapp.com
和api.myapp.com
指向PHP應用程序目錄的public/
。我想要做的是:所有進入api.myapp.com/<method>
的請求都被重寫爲api.myapp.com/api/<method>
,但我恐怕還沒有成功。
下面是我在服務器配置部分想出了:
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_HOST} api
RewriteRule^http://api.%{HTTP_HOST}%/api/{REQUEST_URI} [R=301,L]
</IfModule>
編輯:我的.htaccess的樣子;
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule^index.php [L]
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^api\.myapp\.com$
RewriteCond %{REQUEST_URI} !^/api
RewriteRule^/api%{REQUEST_URI} [L]
</IfModule>
你打開了重寫引擎嗎?什麼是錯誤?什麼意思是「不成功」?服務器不啓動還是重定向失敗? – lordvlad 2014-11-21 10:46:58
我確實認爲重寫引擎已打開,我查看了.htaccess文件中的重寫規則。沒有錯誤,重寫只是失敗而不改變任何東西。 – Ashesh 2014-11-21 10:54:15
試試這個解決方案:http://stackoverflow.com/questions/8291712/using-clean-urls-in-restful-api使用RewriteRule ^/api/api.php或RewriteRule ^/api /([^\.]+ )。(xml | json | atom)api.php?url = $ 1&type = $ 2將所有請求發送到一個api.php文件,然後使用該php文件處理該任務。 – PHPGuru 2015-09-17 18:44:53