2015-01-15 53 views
1

我有一個的mod_rewrite規則是這樣的:塊請求某些條件的.htaccess

RewriteRule ^(/)?some_path/?$ /wp-login.php [QSA,L] 

這使得在WordPress的goto語句SOME_PATH登錄嘗試這阿帕奇重寫爲WP-登錄,這樣的WordPress可以處理它不必知道這個重寫。

我想WP-登錄塊存取都在一起,現在通過mod_rewrite的,但如果我作出這樣一個規則:

RewriteCond %{REQUEST_URI} /wp-login.php 
RewriteRule^- [F,L] 

既然規則塊的它完美,但它會阻止來電/ SOME_PATH我認爲這是因爲mod_rewrite保持循環,儘管所有的規則和/ wp-login.php不匹配,當some_path被重寫爲/wp-login.php時,它阻止了所有的規則。

有沒有一些優雅的方式來處理這個問題?基本上我只想阻止請求去/wp-login.php只有當原始request_uri是wp登錄,而不是重寫request_uri。

詩篇。爲nginx的解決方案加分,雖然這可能是一個不同的問題

回答

2

代替REQUEST_URI使用THE_REQUEST變量:

RewriteCond %{THE_REQUEST} /wp-login.php 
RewriteRule^- [F,L] 

THE_REQUEST變量代表從瀏覽器和Apache接收到原始請求之後不被覆蓋執行一些重寫規則。這個變量的值是GET /index.php?id=123 HTTP/1.1

+1

完美的,正是我所需要的,不知道我怎麼沒有找到這與谷歌... :) – Xeli 2015-01-15 16:50:41

+0

不客氣,很高興它幫助。 – anubhava 2015-01-15 16:52:29