我无法使用htaccess生成友好的网址。我想要这样的东西,
原产地:/temp/info.php?j = 1& m = 2
目的地:/ temp / info / 1/2 /
基于此处的其他一些答案,我使用了以下htaccess规则,
RewriteCond %{THE_REQUEST} ^(GET|HEAD|POST)\ /temp/info\.php\?j=([^&]+)&m=([^&\ ]+)
RewriteRule ^ temp/info/%2/%3/? [R=301,L]
这会将我发送到正确的URL(/ temp / info / 1/2 /),但是我得到未定义的索引j和m错误。所以我添加了下一个,但似乎没有效果,
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?temp/info/([^/]+)/([^/]+)/?$ /temp/info.php?j=$1&m=$2 [L]
谁能告诉我这里做错了什么?第二条规则似乎被忽略了。
答案 0 :(得分:0)
尝试在.htaccess:
之上添加此行Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteCond %{THE_REQUEST} /info\.php\?j=([^&]+)&m=([^&\s]+)
RewriteRule ^ /~temp/info/%1/%2/? [R=302,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (?:^|/)info/([^/]+)/([^/]+)/?$ /~temp/info.php?j=$1&m=$2 [L,QSA]
在MultiViews
之前运行的Apache's content negotiation module
使用选项mod_rewrite
,并使Apache服务器匹配文件扩展名。因此/file
可以在网址中,但它会服务于/file.php
。