重写网站 URL 以删除查询字符串变量问号?



我有一个包含查询字符串变量的当前网址。我想删除它们,以便只有查询字符串的第二部分可见。
从:mysite.com/posts?post=45&tab=profile
至:mysite.com/posts/45/profile
当前.htaccess文件

RewriteEngine on
RewriteBase /
RewriteCond %{THE_REQUEST} s/+access/(S*) [NC]
RewriteRule ^ /%1 [R=301,L,NE]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/access/$1.php -f
RewriteRule ^(.+?)/?$ access/$1.php [L,NC]

网站地图

index.php
/access
-dashboard.php
-posts.php
-account.php

此查询字符串将始终具有参数 1,但可能有也可能没有参数 2,具体取决于他们在碎石上单击的内容。

像这样:

Options -MultiViews
RewriteEngine on
RewriteBase /
RewriteCond %{THE_REQUEST} s/+access/(S*) [NC]
RewriteRule ^ /%1 [R=301,L,NE]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
# 2 parameter rule
RewriteCond %{DOCUMENT_ROOT}/access/$1.php -f
RewriteRule ^([w-]+)/([w-]+)/([w-]+)/?$ access/$1.php?post=$2&tab=$3 [QSA,L]
# 1 parameter rule
RewriteCond %{DOCUMENT_ROOT}/access/$1.php -f
RewriteRule ^([w-]+)/([w-]+)/?$ access/$1.php?post=$2 [QSA,L]
# php extension
RewriteCond %{DOCUMENT_ROOT}/access/$1.php -f
RewriteRule ^(.+?)/?$ access/$1.php [L,NC]
# php extension
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ $1.php [L,NC]
  • 选项MultiViews(请参阅 http://httpd.apache.org/docs/2.4/content-negotiation.html)由在mod_rewrite之前运行的Apache's content negotiation module使用,并使 Apache 服务器匹配文件的扩展名。因此,如果/file是URL,那么Apache将提供/file.html

最新更新