Apache 重写网站URL以删除查询字符串变量问号?
我有一个包含查询字符串变量的当前url。我想删除它们,以便只有查询字符串的第二部分可见。Apache 重写网站URL以删除查询字符串变量问号?,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我有一个包含查询字符串变量的当前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] Rewrite
发件人:
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,具体取决于他们在屏幕上单击的内容。如下所示:
选项-多视图
重新启动发动机
重写基/
RewriteCond%{THE_REQUEST}\s/+access/(\s*)[NC]
重写规则^/%1[R=301,L,NE]
RewriteCond%{REQUEST_FILENAME}-f[或]
RewriteCond%{REQUEST_FILENAME}-d
重写规则^-[L]
#2参数规则
重写cond%{DOCUMENT_ROOT}/access/$1.php-f
重写规则^([\w-]+)/([\w-]+)/([\w-]+)/?$access/$1.php?post=$2&tab=$3[QSA,L]
#1参数规则
重写cond%{DOCUMENT_ROOT}/access/$1.php-f
重写规则^([\w-]+)/([\w-]+)/?$access/$1.php?post=$2[QSA,L]
#php扩展
重写cond%{DOCUMENT_ROOT}/access/$1.php-f
重写规则^(+?)/?$access/$1.php[L,NC]
#php扩展
重写cond%{DOCUMENT_ROOT}/$1.php-f
重写规则^(+?)/?$$1.php[L,NC]
- 选项
(请参阅)由MultiViews
Apache的内容协商模块
使用,该模块在
之前运行,并使Apache服务器匹配文件扩展名。因此,如果mod_rewrite
是URL,那么Apache将提供/file
/file.html
posts.php驻留在哪里?它在access/
目录中吗?是的,我会在一分钟内更新目录信息。我想它又在工作了,现在我必须在javascript端更改一些东西来正确解析URL。但是在php中,如果我echo$_GET['post']代码>它打印出我在slashI做了一次小编辑后使用的任何数字。如果您将URL用作mysite.com/posts/45/profile
,那么它将给出$\u GET['post']=45
和$\u GET['tab']=profile
。我相信这就是你想要的。我能让它工作,谢谢!我只是有几个问题。在这种情况下,多视图
做什么?另外,对于php扩展规则,是否有一种方法可以编写它,以便删除任何php文件的扩展名?因为如果我对另一个文件夹进行ajax调用,我必须放置php扩展。谢谢我已经修改了#php扩展
规则,使其适用于任何文件夹<代码>选项-多视图
关闭内容协商服务。我在回答中添加了一个解释。哇,你是最好的!你对我的帮助比这个网站上的任何人都多。求你了,让我给你一些帮助。我想买你的书,但我知道大部分利润都给了别人