这是重写干净网址的.htaccess代码。
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+download\.php\?id=([^\s&]+) [NC]
RewriteRule ^ download/%1? [R=301,L]
RewriteRule ^download/([^/]+)/?$ download.php?id=$1 [L,QSA]
此代码适用于url中的单个参数。例如,它会将www.mysitename.com/download.php?id=123
重写为www.mysitename.com/download/123
但是当我尝试在url中传递多个参数时,我得到的只是错误。搜索了各种资源和相关问题,但没有得到适当的解决方案。
我需要一个类似www.mysitename.com/download/123/file-name
的网址,而不是www.mysitename.com/download.php?id=123&name=file-name
我想我可以使用像RewriteRule ^(.*)/(.*)$ download.php?id=$1&name=$2
之类的东西。但在实施过程中我遇到了404错误。如何更改我的代码以传递多个网址。提前谢谢。
答案 0 :(得分:2)
您只需在规则中添加参数
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+download\.php\?id=([0-9]+)&name=([^\s&]+)\s [NC]
RewriteRule ^ download/%1/%2? [R=301,L]
RewriteRule ^download/([0-9]+)/([^/]+)/?$ download.php?id=$1&name=$2 [L]