我知道有太多的問題存在htaccess重定向,但我找不到確切的解決方案。如果存在匹配的問題,我很抱歉。CakePHP htaccess刪除www
在我的公開HTML(Web根目錄)文件夾中有下列htaccess文件:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
然後重定向的URL以「WWW」到「非www。」我補充兩行。和文件變成這個樣子:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
</IfModule>
所以問題是, www.example.com重定向到example.com 但www.example.com/mycontroller/沒有重定向到example.com/mycontroller/
我該如何解決這個問題?
非常感謝。我沒有談到「L」參數。還要感謝關於Apache配置文件的建議。 – trante
RedirectMatch http:// www。(。*)\。(。*)http://(。*)\。(。*)似乎也能正常工作。你能告訴我概念上的區別嗎? –
RedirectMatch帶有一個不同的Apache模塊(mod_alias)。它實現了類似的事情,但比RewriteCond/RewriteRule更不靈活和強大。您只能匹配URL路徑(因此,您的示例將不起作用,因爲它包含www子域,它不是URL路徑的一部分,您的重定向URL也是正則表達式)。使用RewriteCond/RewriteRule,您可以匹配請求的各個部分並具有多個條件。 – danielv