.htaccess 如何使用htaccess替换包含查询的URL字符串的一部分?

tcbh2hod  于 2022-11-30  发布在  其他
关注(0)|答案(1)|浏览(132)

我有一个使用PHP查询字符串的URL字符串。我想使URL漂亮,但我还不能使规则正确。
目前的URL如下所示:

http://localhost/pages/map?name=Skyfall-2022

但我希望它看起来像这样:

http://localhost/pages/Skyfall-2022

这是我目前的htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteRule ^([^\.]+)$ $1.html [NC,L]

RewriteRule ^pages/(.+)$ /pages/map?name=$1

当我尝试键入所需的URL时,我得到一个500内部错误。我不是很理解正则表达式,所以如果有人能用更新的.htacces为我调整这个,我将不胜感激

jaql4c8m

jaql4c8m1#

使用您显示的示例,请尝试遵循htaccess规则。
请确保在测试URL之前清除浏览器缓存。

RewriteEngine ON
##External redirect for url change in browser rules here...
RewriteCond %{THE_REQUEST} \s/(pages)/map/?\?name=(\S+)\s [NC]
RewriteRule ^  %1/%2? [R=301,L]

##Internal rewrite here for internal file's serving here.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/(.*)/?$  $1/all-maps.php?name=$2 [QSA,L]

***注意:***我在重写规则中提到了map?(第二组规则也写在规则的注解中),你可以用你的php文件名来改变它,无论你要把查询字符串传递到什么php文件。
***注2(OP的修复程序根据OP环境):***稍微调整了一条规则到$1/all-maps.php?name=$2 to $1/map.php?name=$2,并将all-maps.php目录下移一个目录,这些规则工作得很好,OP在这里的评论中提到了这些规则。只是在这里分享,在未来它可以帮助人们,除了上述规则,这是作为解决方案的一部分。

相关问题