将 mysite.com/app.php?appname=example-name&appid=numeric-id 重写为 mysite.com/app/app-name/numeric-id/
Rewrite mysite.com/app.php?appname=example-name&appid=numeric-id to mysite.com/app/app-name/numeric-id/
我是 PHP 和服务器端操作的新手,所以在这里问这个基本问题。我在这里找到了很多类似的问题和答案,但我没有达到我想要的。我如何编写我的 htaccess 文件来产生这些结果?
动态URL:
mysite.com/app.php?appname=example-name&appid=numeric-id
URL我要:
mysite.com/app/example-name/numeric-id
在您的 .htaccess 文件中试试这个
RewriteEngine On
RewriteRule ^app/(.*)/(.*)/?$ /app.php?appname=&appid= [QSA,NC,L]
编辑:
RewriteEngine On
RewriteCond %{THE_REQUEST} app\.php\?appname=(.*?)&appid=([0-9]+) [NC]
RewriteRule ^ /app/%1/%2? [R=302,L]
RewriteRule ^app/(.*)/([0-9]+)/?$ /app.php?appname=&appid= [L,QSA]
改写
http://mysite.com/app.php?appname=example-name&appid=numeric-id
至
http://mysite.com/app/example-name/numeric-id
您可以使用这些规则:
RewriteEngine on
RewriteCond %{QUERY_STRING} appname=([^?&]+)&appid=([^?&]+) [OR,NC]
RewriteCond %{QUERY_STRING} appid=([^?&]+)&appname=([^?&]+) [NC]
RewriteRule ^app\.php.*$ /app/%1/%2? [R=301,L]
这些规则捕获您想要的查询字符串参数,然后按照它们被捕获的顺序在重写中使用它们。如果参数的顺序被切换,有两种情况。尾随问号 (?
) 从重写的输出中删除原始查询字符串。
301重定向提示:
如果您过去的 .htaccess 规则包含 301 重定向(301 = 永久),即使它不正确,您的浏览器也会缓存该重定向并且不会查询 .htaccess URL.
为了测试,使用 302 重定向,然后当您满意时切换到 301。如果为时已晚,请尝试在您的请求中添加另一个参数以暂时绕过此,例如:
app.php?appname=example-name&appid=numeric-id &nonce=1234
或者,清除浏览器缓存,或者使用 ingocnito window.
我是 PHP 和服务器端操作的新手,所以在这里问这个基本问题。我在这里找到了很多类似的问题和答案,但我没有达到我想要的。我如何编写我的 htaccess 文件来产生这些结果?
动态URL:
mysite.com/app.php?appname=example-name&appid=numeric-id
URL我要:
mysite.com/app/example-name/numeric-id
在您的 .htaccess 文件中试试这个
RewriteEngine On
RewriteRule ^app/(.*)/(.*)/?$ /app.php?appname=&appid= [QSA,NC,L]
编辑:
RewriteEngine On
RewriteCond %{THE_REQUEST} app\.php\?appname=(.*?)&appid=([0-9]+) [NC]
RewriteRule ^ /app/%1/%2? [R=302,L]
RewriteRule ^app/(.*)/([0-9]+)/?$ /app.php?appname=&appid= [L,QSA]
改写
http://mysite.com/app.php?appname=example-name&appid=numeric-id
至
http://mysite.com/app/example-name/numeric-id
您可以使用这些规则:
RewriteEngine on
RewriteCond %{QUERY_STRING} appname=([^?&]+)&appid=([^?&]+) [OR,NC]
RewriteCond %{QUERY_STRING} appid=([^?&]+)&appname=([^?&]+) [NC]
RewriteRule ^app\.php.*$ /app/%1/%2? [R=301,L]
这些规则捕获您想要的查询字符串参数,然后按照它们被捕获的顺序在重写中使用它们。如果参数的顺序被切换,有两种情况。尾随问号 (?
) 从重写的输出中删除原始查询字符串。
301重定向提示:
如果您过去的 .htaccess 规则包含 301 重定向(301 = 永久),即使它不正确,您的浏览器也会缓存该重定向并且不会查询 .htaccess URL.
为了测试,使用 302 重定向,然后当您满意时切换到 301。如果为时已晚,请尝试在您的请求中添加另一个参数以暂时绕过此,例如:
app.php?appname=example-name&appid=numeric-id &nonce=1234
或者,清除浏览器缓存,或者使用 ingocnito window.