Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 重写网站URL以删除查询字符串变量问号?_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

Apache 重写网站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

我有一个包含查询字符串变量的当前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,具体取决于他们在屏幕上单击的内容。

如下所示:

选项-多视图
重新启动发动机
重写基/
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的内容协商模块
    使用,该模块在
    mod_rewrite
    之前运行,并使Apache服务器匹配文件扩展名。因此,如果
    /file
    是URL,那么Apache将提供
    /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扩展
规则,使其适用于任何文件夹<代码>选项-多视图
关闭内容协商服务。我在回答中添加了一个解释。哇,你是最好的!你对我的帮助比这个网站上的任何人都多。求你了,让我给你一些帮助。我想买你的书,但我知道大部分利润都给了别人