2013-03-02 106 views
-1

我在嘗試重定向來自domain.com/sign-up/*的所有請求。到domain.com/sign-up/ 另外,我想知道我的代碼是否可以改進,請參閱下文。使用mod_rewrite問題重定向

Options +FollowSymLinks 
Options +Indexes 
RewriteEngine On 
RewriteRule ^sign-up/(.*)\.php$ public/register.php [NC] 
RewriteRule ^sign-up/(.*) /sign-up/ [R] 
RewriteRule ^sign-up/\??lang=([a-zA-Z][a-zA-Z][a-zA-Z])$ public/register.php?lang=$1 [NC] 
RewriteRule ^sign-up/?$ public/register.php [NC,L] 

爲什麼不發生重定向?

+0

您必須共享所有要重寫的URL的情況。否則,我們所提供的只是猜測。分享網址和流程。現在發生了什麼,應該發生什麼,現在網址如何,他們應該怎麼做?! – Shef 2013-03-02 23:30:47

+0

嗨,目前一切工作正常,除了我在問題中提到的例子。不執行任何操作的RewriteRule是:「RewriteRule ^註冊/(.*)/註冊/ [R]」如果我理解正確,我會輸入的所有內容,例如domain.com/sign-up/foo應該得到重定向(不重寫)到domain.com/sign-up/ – 2013-03-02 23:34:51

+0

似乎沒有效果。 – 2013-03-02 23:52:13

回答

1

試試這個,讓我知道它是否有效。如果沒有,請讓我知道哪個網址不起作用。

<IfModule mod_rewrite.c> 
Options +FollowSymLinks 
Options +Indexes 
RewriteEngine On 
RewriteBase/

# sign-up/xxx.php -> public/register.php 
RewriteRule ^sign-up/.*\.php$ public/register.php [L] 

# sign-up/xxx -> /sign-up/ 
RewriteRule ^sign-up/.+ /sign-up/ [R=301,QSA,L] 

# sign-up/?lang=xxx -> public/register.php?lang=xxx 
RewriteCond %{QUERY_STRING} .*lang=([a-z]{3}).* [NC] 
RewriteRule ^sign-up/$ public/register.php?lang=%1 [L,NC] 

# /sign-up/ -> public/register.php 
RewriteRule ^sign-up/?$ public/register.php [NC,L] 
</IfModule> 
+0

#註冊/ xxx - > /註冊/重寫規則^註冊/ .* /註冊/ [L,R]看起來像我得到的結果一樣,沒有重定向發生。只重寫。註冊/ xxx應顯示註冊/在瀏覽器中uri – 2013-03-03 00:01:11

+0

@ user1614199現在怎麼樣? – Shef 2013-03-03 00:10:38

+0

同樣的事情,它不重定向。是否有另一個基於正則表達式的htaccess重定向我可以使用? – 2013-03-03 11:33:26