2011-10-04 55 views
1

這是我有:模式重寫通用規則隱藏動態url元素?

www.name.com/category.php?title=111-hello-kitty

這是我想什麼:

www.name.com/category/111-hello-kitty

也是它可能隱藏在htaccess的數字部分,所以它看起來是這樣的:

www.name.com/category/hello-kitty

這是我當前的代碼:

RewriteEngine On 
RewriteCond %{THE_REQUEST} ^[A-Z]+\s.+\.php\sHTTP/.+ 
RewriteRule ^(.+)\.php$ /$1 [R=301,L] 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php 

RewriteRule ^([^/.]+)$ /?title=$1 

很明顯,最後一行是行不通的。

我可以打電話給一般都?anything=由一個被替換/像上面的例子嗎?

回答

1

我的想法:

  • 隱藏數量將需要一些SQL更改。這是因爲你不再有ID提供給你,現在你必須查詢數據庫得到它。
  • 我會用www.name.com/category/111/hello-kitty/我的URL。原因是這樣你可以系統地解析每個部分。請注意,這也是StackOverflow正在使用的內容。以下重寫規則假定categoryhello-kitty的部分僅包含字母數字符號和破折號(一種常見的做法):

RewriteRule ^([A-Za-z0-9-]+)/([0-9]+)/([A-Za-z0-9-]+)/?$ /$1.php?title=$2-$3 

#although I'd recommend that you really do this: 
RewriteRule ^([A-Za-z0-9-]+)/([0-9]+)/[A-Za-z0-9-]+/?$ /$1.php?id=$2 
+0

我不斷收到500內部服務器錯誤。這將工作在任何文件傳遞變量id /標題的任何目錄?例如:'HTTP:如果您提供'/ DIR/100/HI-there' //name.com/dir/file.php標題= 111-HELLO-kitty' – checkenginelight

+0

,我的規則將會重寫到'/目錄。前者中的php?title = 100-hi-there'或後者中的'/dir.php?id = 100'。那有意義嗎?爲了在它之前使用目錄,您需要在規則前面加上目錄。 –

+0

這很有道理,我會繼續嘗試。所以把這個放在我自己的重寫規則的末尾應該給我我想要的效果? '重寫規則^ /目錄/([A-ZA-Z0-9 - ] +)/([0-9] +)/([A-ZA-Z0-9 - ] +)/ $ /目錄/ $ 1嗎?。 php?title = $ 2- $ 3' – checkenginelight

0

做這樣的事情:

重寫規則^類別(/.+)?$ /category.php [L]