现在我在我的电子商店脚本中使用这个htaccess文件:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w-]+)/([\w-]+)/?$ product.php?category_id=$1&product_id=$2 [QSA,L]
RewriteRule ^([\w-]+)/?$ products.php?category_id=$1 [QSA,L]
看起来SEO友好,并允许客户看到很好的打印地址栏,如:
mydomain.com/CDPlayers/Sonytr200
问题在于我被告知要改进引擎而不是CDPlayers
或Sonytr200
我应该生成CD-Players
和Sony-tr-200
。我不得不承认我从网上获得了htaccess正则表达式,因为我没有多研究正则表达式。
这个因为它只接受一个单词而不再工作了,现在我需要的东西可以让我使用连字符分割的无限数量的单词,所以它必须在以下情况下工作:
mydomain.com/Word
(第1阶段)或
mydomain.com/Word-word-word
(第1阶段)和
mydomain.com/Word/Word
(第2阶段)或
mydomain.com/Word-word-word/Word-word-word
(第2阶段)答案 0 :(得分:2)
您可以使用新的递归规则首先删除所有连字符:
RewriteEngine On
RewriteRule "^([^-]*)-+([^-]*-.*)$" $1-$2 [L]
RewriteRule "^([^-]*)-([^-]*)$" /$1-$2 [L,R=302]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w-]+)/([\w-]+)/?$ product.php?category_id=$1&product_id=$2 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w-]+)/?$ products.php?category_id=$1 [QSA,L]