我已将www.site.com/asd重定向到www.site.com/index.php?page=asd。但是,我想补充一点,www.site.com/products/asd将重定向到www.site.com/index.php?page=products&item=asd
我似乎无法使其正常工作,我将此作为我的基本代码:
RewriteEngine On
RewriteRule ^(admin|pictures)($|/) - [L]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_URI} !=/pictures/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /index.php?page=$1 [L,QSA]
我尝试添加:
RewriteRule ^([^/]*)/([^/]*)$ /index.php?page=$1&item=$2 [L]
在.htaccess文件的各个位置,这会导致: 500内部服务器错误 要么 0 CSS文件加载在.com / products / asd中没有图片加载.com / anyfile
我理解它与路径有关,但这是一个很好的方法吗?我可以在.htaccess文件中以某种方式解决它,或者我是否需要添加一些检查,如果它的产品页面和产品显示,请包括../css?
答案 0 :(得分:0)
^(.+)$
正则表达式为您提供“500内部服务器错误”,因为重定向与规则匹配。因此,您收到以下错误:
由于可能的配置错误,请求超出了10个内部重定向的限制。
您可以使用:
RewriteRule ^products/(.+)$ index.php?page=products&item=$1 [L,QSA]
RewriteRule ^([^\.]+) index.php?page=$1 [L,QSA]
因此,以下网址将重定向到:
/products/asd
至index.php?page=products&item=asd
/asd
至index.php?page=asc
答案 1 :(得分:0)
更改最后两行,如下所示:
RewriteRule ^([^/]+)/?$ /index.php?page=$1 [L]
RewriteRule ^([^/]+)/([^/]+)/?$ /index.php?page=$1&item=$2 [L]
您应该在第一个规则中指定URI必须来自/whatever/
或/whatever
,以便第二个匹配/whatever/whetever
或/whatever/whatever/
,并且两者都可以单独使用干扰。