2013-03-05 101 views
0

我試圖建立一個.htaccess文件到一個輸入鏈接轉換,如:htaccess的mod_rewrite的重寫規則

http://domain.com/root/TopNav/SubNav/SEO-friendly-file-name-p#

到這一點:

http://domain.com/root/index.php?t=TopNav&s=SubNav&l=SEO-friendly-file-name&p=#

其中p#是頁id和TopNav/SubNav代表文件的導航菜單路徑

我已經能夠使它在所有ca除了在.php之後有參數時(除了mod重寫,但失去了參數)。最初,我希望讓.htaccess解析url字符串,以便腳本可以使用,但是在這一點上,我會很滿意任何解決方案,它將傳入的url並將其轉儲爲根/ index.php文件。

這裏就是我目前有在.htaccess:

<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteRule ^(.*)/(.*)\.php  index.php?s=$1&p=$2 [L] 
RewriteRule ^(.*)/   index.php?p=$1&s=$1 [L] 
</IfModule> 
ErrorDocument 404 /404.php 

什麼我可能是做錯了什麼想法?更好的方法來完成這個建議?

感謝

**有人建議更改[L]到[L,QSA]這似乎已經奏效。謝謝你,誰建議,...

+0

歡迎您。 – 2013-03-05 04:38:40

回答

0

隨着URU,看起來像這樣:/TopNav/SubNav/SEO-friendly-file-name-p#你有4個分組,您需要:

  1. TopNav
  2. SubNav
  3. 搜索引擎友好的,文件 - 命名

所以,你需要你的手藝正則表達式,以便它在一個去捕捉這4兩件事。

嘗試:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/([^/]+)/(.+?)-p([0-9]+)$ index.php?t=$1&s=$2&l=$3&p=$4 [L,QSA] 

這將走在htaccess文件在你的/root目錄