2012-08-28 151 views
1

我有以下形式的網址:的.htaccess重定向正常的URL查詢字符串

www.example.com/r/abc/1234 

,我想重寫:

www.example.com/r.php?deb=abc&id=1234 

有一個URL:

www.example.com/r/12bcd-qsqs-343-wdwd/1234 

應改寫爲:

www.example.com/r.php?abc_id=12bcd-qsqs-343-wdwd&id=1234 

這兩個規則都應該由.htaccess來處理。有什麼建議麼?

+0

通過所有到您自己的腳本,比PHP腳本程序的URI作爲一個參數裏面。這對於您正在運行的Web服務器來說並不那麼具體,並且更加靈活。這通常只需要一個或很少的規則。比較:[symfony2重寫規則.htaccess app.php](http://stackoverflow.com/questions/11149526/symfony2-rewrite-rules-htaccess-app-php) – hakre

回答

1

這兩個你想重定向的URI看起來都差不多,除了第二個在第一個查詢參數中有連字符-

啓用mod_rewrite的,並通過httpd.conf的.htaccess,然後把這個代碼在你.htaccessDOCUMENT_ROOT目錄:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteRule ^r/([^-]+)/(.+)/?$ r.php?deb=$1&id=$2 [L,QSA] 

RewriteRule ^r/([a-z0-9-]+)/(.+)/?$ r.php?abc_id=$1&id=$2 [L,QSA,NC] 
+0

感謝您對我所做的小改動提供的幫助,但現在問題在於它在我的本地主機上工作,但是當我將它轉移到服務器上時,我正在運行虛擬主機它不起作用,您能幫忙嗎? –

+0

在服務器上確認.htaccess已啓用,然後在DOCUMENT_ROOT目錄中正確調節.htaccess。如果一切正常,則在上面的2個RewriteRule行中添加'R'標誌以查看服務器上的最終URI。 – anubhava

+0

非常感謝:)有什麼我可以跟你保持聯繫的任何社交網站或任何東西? –

1

試着這麼做:

RewriteRule (.*)/(.*)/(.*)$ path_to_php_files/$1.php?deb=$2&id=$3 [QSA,L,NC] 

不幸的是這條規則,你將擁有第一個$ _GET參數總是DEB,我希望你有DirectoryIndex的設置corectly。我不認爲這對

www.example.com/r/abc/1234 
www.example.com/r/12bcd-qsqs-343-wdwd/1234 

可以delivrer的ABC和12bcd-qsqs-343-wdwd 2個不同的$ _GET參數,如果你有動態鏈接。

+0

將無法​​正常工作,因爲RewriteRule不匹配開始斜槓'/'。 – anubhava

+0

是的,謝謝,我刪除了它,但它應該可以工作。 – Cosmin

+0

其實如果你注意到OP想用兩種不同的查詢參數以兩種不同的方式重定向。 – anubhava

相關問題