我有一个URL:www.example.com/products.php?category=category我想重写为www.example.com/products/category
(the类别可以是肉类,调味品或吸烟者,这取决于用户希望看到的产品)
我使用了一些重写规则,我已经看到在堆栈溢出和其他来源,但没有运气。
最接近的是页面加载,但是category参数返回null而不是值。
举例来说:
RewriteRule ^products/([^/]+)$ products.php?category=$1 [L,QSA]
将加载页面www.example.com/products/meats,但服务器只从类别查询中接收null。
我也试过这个:
# Check if the request is for /products.php with a category query parameter
RewriteCond %{REQUEST_URI} ^/products\.php$
RewriteCond %{QUERY_STRING} ^category=meats$
# If the conditions are met, rewrite to /products/<category> with the query string
RewriteRule ^products\.php$ /products/%1 [L,QSA]
404错误页面
1条答案
按热度按时间wlzqhblo1#
正如@DontPanic所说,你的第一个 RewriteRule 是正确的。我在我的 Apache 安装上试了一下,它在下面的配置下工作得很好。
.htaccess
内容顺便说一下,如果你在
products
之前添加一个可选的前导斜杠,你会得到同样的行为:products.php
内容这是我的浏览器为
http://rewrites.local/products/smoky-stuff
输出的内容:关于404错误的几点建议:
.htaccess
文件中执行 RewriteRules,所以你需要有这样的东西:或者至少允许 FileInfo: