2016-12-31 135 views
0

我想改寫這個網址:的.htaccess URL重寫匹配的符號,字母和數字

localhost/classifieds/index.php?page=activate&extra=$2y$10$LsV9m8JgEz2zMaJYRNqocuOzaqR8oHmn3tBIjIQv.TI4JWd3rWVrC 

到:

localhost/classifieds/activate/$2y$10$LsV9m8JgEz2zMaJYRNqocuOzaqR8oHmn3tBIjIQv.TI4JWd3rWVrC 

現在,第一部分是成功的,如果我輸入:

localhost/classifieds/activate 

它給了我:

localhost/classifieds/index.php?page=activate 

在此,加載正確的控制器。

我的主要問題是我希望規則也重寫URL的第二部分。

我嘗試了不同的正則表達式組合,但都無濟於事。

+1

這會有幫助嗎? 'RewriteRule^classifieds/activate /(.*)$ index.php?page = activate&extra = $ 1 [NC,L,QSA]'。 LE:我通常讓PHP應用程序動態地路由一切,管理哪個控制器實例化,如果它存在。 'RewriteRule ^(。*)$ index.php [L,QSA]'以編程方式將URL分成控制器,動作和參數 –

+0

非常感謝。我稍微修改了一下你的答案,它有效。這就是我最後使用的'RewriteRule ^([a-zA-Z0-9] +)/(。*)/ $ index.php?page = $ 1&extra = $ 2' – theFreakative

回答

0

爲了classifieds/activate/whatever默默地打index.php?page=activate&extra=whatever,你需要的東西是這樣的:

Options +FollowSymLinks 

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteBase/

    # Match the host, if you wish 
    #RewriteCond %{HTTP_HOST} ^localhost$ 

    RewriteRule classifieds/activate/(.*) index.php?page=activate&extra=$1 [L] 
</IfModule> 

如果你想要的任何查詢字符串參數傳遞,您需要將QSA flag增加的結束重寫規則。

如果您願意,可以在線測試。

如果你需要一個更通用的重寫規則重寫URI(在這種情況下activate)第二段到page參數,這裏就是你需要:

RewriteRule classifieds/(.*)/(.*) index.php?page=$1&extra=$2 [L] 

您可以具體談談什麼你想要的字符;交換(.*)([0-9A-Za-z])(\w)之類的東西只接受字母數字值會做。

相關問題