我正在尝试重写
http://example.com/category/this-is-my-category
到...
http://example.com/category.php?id=this-is-my-category
我的.htaccess文件如下:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^category/(\d+)/([\w-]+)$ /category.php?id=$1 [L]
这会导致404错误
http://example.com/category.php在服务器上
我也尝试过
RewriteRule ^category/(\d+)/([\w-]+)$ ./category.php?id=$1 [L]
和
RewriteRule ^/category/([a-zA-Z0-9]+)$ /category.php?id=$1
我已经阅读了一些有关此内容的文章,但看不到.htaccess文件中的代码有问题。
答案 0 :(得分:4)
对,那么您的第一个正则表达式...
^category/(\d+)/([\w-]+)$
需要一个介于category
和最后一部分之间的数字,例如/category/1234/something-else
。
您的第二个正则表达式...
^/category/([a-zA-Z0-9]+)$
的斜杠不正确(重写规则始于重写基础),并且在category
之后仅仅个字母和数字,例如/category/thisIsMyCategory
。
您要测试的网址包含字母和连字符。
对我来说,看起来像你想要的
RewriteEngine On
RewriteRule ^category/([\w-]+)$ /category.php?id=$1 [L,QSA]
演示〜https://htaccess.madewithlove.be?share=8c3de5aa-68f3-5ec0-9c69-23ff2dbe2d6e
一些注意事项...
RewriteBase
,尤其是如果您的.htaccess
文件位于根目录中,因此我已将其删除了我添加了QSA
标志,以便保留所有查询参数。例如
/category/this-is-my-category?foo=bar
成为
/category.php?id=this-is-my-category&foo=bar