首页 > 解决方案 > 重写 .htaccess 中的 URL 以用正斜杠 (id?=value) 替换查询参数

问题描述

我已确保启用了重写引擎并且删除 .php 扩展名正在工作,所以我知道这不是问题。

我要做的只是删除 URL 的 ?id=value 方面,所以基本上使 URL 看起来像这样:

folder/medias/value

代替

folder/medias?id=value

我当前的 .htaccess 看起来像这样:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [NC,L]

RewriteRule ^404/?$ /404.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^ 404.php [L,R]

标签: apache.htaccessmod-rewriteurl-rewriting

解决方案


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

RewriteEngine ON
##Rules for external rewrite.
RewriteCond %{THE_REQUEST} \s/([^.]*)\.php\?id=(\S+)\s [NC]
RewriteRule ^ /%1/%2? [R=301,L]
##Rule for internal rewrite.
RewriteRule ^([^/]*)/([^/]*)/?$ $1?id=$3 [L]

推荐阅读