我有點卡住了我的重定向規則。小例子比長篇演說更好,在這裏不用大丑:在重寫規則中重用子域
IndexIgnore *
ErrorDocument 404 http://www.example.com
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^([^\.]+)\.example\.com$ http://example.com/private/$1/public/si.php [L]
我的目標是讓子域([^\.]+)
和重定向使用它,而不是$1
。 例如,test.example.com
應該重定向到http://example.com/private/test/public/si.php
謝謝你的幫助。
問候, S.
最終工作htaccess的:
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{REQUEST_URI} !^/private/
RewriteCond %{HTTP_HOST} ([^\.]+).example.com [NC]
RewriteRule^/private/%1/public/$1 [R=301,L]
重定向anysub.example.com/anypage
到anysub.example.com/private/anysub/public/anypage
如果過濾的方式是使用RewriteCond,我沒有得到什麼是使用rewriterule模式。你能解釋給我嗎?此外,它正在工作,但我希望瀏覽器顯示的網址是短的,即test.example.com;它翻譯成它顯示完整的一個。 – Sebas
@Sebas這個'^'字符的意思是「URI的開始」,它的確和'。*'沒有區別。基本上它匹配一切。如果您不想重定向瀏覽器(重定向**總是**更改瀏覽器的URL地址欄中的內容),則從規則的目標中移除「http:// example.com」。 –
完美,我不得不添加一個過濾器,以避免遞歸重定向和voilá!謝謝你的幫助 – Sebas