将 htaccess modrewrite 用于友好的 url 会出现 404 错误
Using htaccess modrewrite for friendly urls gives a 404 error
我正在尝试重写
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= [L]
这会产生 404 错误
http://example.com/category.php 存在于服务器上
我也试过了
RewriteRule ^category/(\d+)/([\w-]+)$ ./category.php?id= [L]
和
RewriteRule ^/category/([a-zA-Z0-9]+)$ /category.php?id=
我已经阅读了一些关于此的文章,但看不到 .htaccess 文件中的代码有问题。
好的,所以你的第一个正则表达式...
^category/(\d+)/([\w-]+)$
需要一个介于 category
和最后一部分之间的数字,例如 /category/1234/something-else
.
你的第二个正则表达式...
^/category/([a-zA-Z0-9]+)$
有一个不正确的前导斜杠(重写规则从重写基开始)并且在 category
之后只需要 个字母和数字,例如 /category/thisIsMyCategory
。
您正在测试的 URL 包含字母和连字符。
对我来说,这看起来像你想要的
RewriteEngine On
RewriteRule ^category/([\w-]+)$ /category.php?id= [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
我正在尝试重写
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= [L]
这会产生 404 错误
http://example.com/category.php 存在于服务器上
我也试过了
RewriteRule ^category/(\d+)/([\w-]+)$ ./category.php?id= [L]
和
RewriteRule ^/category/([a-zA-Z0-9]+)$ /category.php?id=
我已经阅读了一些关于此的文章,但看不到 .htaccess 文件中的代码有问题。
好的,所以你的第一个正则表达式...
^category/(\d+)/([\w-]+)$
需要一个介于 category
和最后一部分之间的数字,例如 /category/1234/something-else
.
你的第二个正则表达式...
^/category/([a-zA-Z0-9]+)$
有一个不正确的前导斜杠(重写规则从重写基开始)并且在 category
之后只需要 个字母和数字,例如 /category/thisIsMyCategory
。
您正在测试的 URL 包含字母和连字符。
对我来说,这看起来像你想要的
RewriteEngine On
RewriteRule ^category/([\w-]+)$ /category.php?id= [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