Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.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重定向到动态url_Apache_.htaccess_Mod Rewrite_Redirect_Rewrite - Fatal编程技术网

Apache 将静态url重定向到动态url

Apache 将静态url重定向到动态url,apache,.htaccess,mod-rewrite,redirect,rewrite,Apache,.htaccess,Mod Rewrite,Redirect,Rewrite,我正试图将现有流量重定向到一个重写过的站点,该站点现在在Apache服务器上使用带有RewriteRule的动态URL,例如 将whicher.com/directory/some\u页面重定向到whicher.com/directory/?m=some\u页面 每一个重写URL的例子都显示了从动态到静态的另一种方式,因此很难找到工作示例。到目前为止,我所尝试的一切要么不起作用,要么返回500服务器错误 最初的some_页面仍然存在,但现在它不再是一个索引文件,而是一堆jpg的,重要的是要理解,

我正试图将现有流量重定向到一个重写过的站点,该站点现在在Apache服务器上使用带有RewriteRule的动态URL,例如

将whicher.com/directory/some\u页面重定向到whicher.com/directory/?m=some\u页面

每一个重写URL的例子都显示了从动态到静态的另一种方式,因此很难找到工作示例。到目前为止,我所尝试的一切要么不起作用,要么返回500服务器错误


最初的some_页面仍然存在,但现在它不再是一个索引文件,而是一堆jpg的

,重要的是要理解,您提到的示例是重写,其中用户看到的URL被重写,以便应用程序获得它能理解的URL。然而,听起来您需要的是重定向,即客户在发送到应用程序之前将URL更改为新URL的位置

要从whicher.com/directory/?m=some\u页面重定向到whicher.com/directory/some\u页面,您可以这样做

RewriteBase /
RewiteCond %{QUERY_STRING} m=([^&]+) [NC]
RewriteRule ^directory/.? /directory/%1 [NC, L, R] 
RewriteBase /
RewiteCond %{QUERY_STRING} m=([^&]+) [NC]
RewriteRule ^directory/.? /directory/%1 [NC, L]
RewriteBase /
RewriteRule ^directory/([^/]+)/? /directory/$1 [NC, L, R] 
RewriteBase /
RewriteRule ^directory/([^/]+)/? /directory/$1 [NC, L]
要从whicher.com/directory/?m=some\u页面重写到whicher.com/directory/some\u页面,您可以这样做

RewriteBase /
RewiteCond %{QUERY_STRING} m=([^&]+) [NC]
RewriteRule ^directory/.? /directory/%1 [NC, L, R] 
RewriteBase /
RewiteCond %{QUERY_STRING} m=([^&]+) [NC]
RewriteRule ^directory/.? /directory/%1 [NC, L]
RewriteBase /
RewriteRule ^directory/([^/]+)/? /directory/$1 [NC, L, R] 
RewriteBase /
RewriteRule ^directory/([^/]+)/? /directory/$1 [NC, L]
要从which.com/directory/some_page/directory/?m=some_page重定向,您可以这样做

RewriteBase /
RewiteCond %{QUERY_STRING} m=([^&]+) [NC]
RewriteRule ^directory/.? /directory/%1 [NC, L, R] 
RewriteBase /
RewiteCond %{QUERY_STRING} m=([^&]+) [NC]
RewriteRule ^directory/.? /directory/%1 [NC, L]
RewriteBase /
RewriteRule ^directory/([^/]+)/? /directory/$1 [NC, L, R] 
RewriteBase /
RewriteRule ^directory/([^/]+)/? /directory/$1 [NC, L]
要从which.com/directory/some_page/directory/?m=some_page重写,您可以这样做

RewriteBase /
RewiteCond %{QUERY_STRING} m=([^&]+) [NC]
RewriteRule ^directory/.? /directory/%1 [NC, L, R] 
RewriteBase /
RewiteCond %{QUERY_STRING} m=([^&]+) [NC]
RewriteRule ^directory/.? /directory/%1 [NC, L]
RewriteBase /
RewriteRule ^directory/([^/]+)/? /directory/$1 [NC, L, R] 
RewriteBase /
RewriteRule ^directory/([^/]+)/? /directory/$1 [NC, L]

通过阅读你的问题,我不完全确定你想做什么,但上面的一个应该可以解决它

.htaccess陷入了一个循环,因为我无法让它处理查询字符串,很可能是因为我缺乏经验,所以我利用了导航到/directory/some_页面返回的403,该页面仍然存在,但没有索引文件。htaccess拒绝目录列表

403现在被发送到一个php错误页面,该页面使用页眉重定向到/directory/?m=some_页面的正确地址


我知道调用额外的页面会增加开销,但根据服务器日志,这种情况不会经常发生,而且可以正常工作。

我需要从静态地址重定向到动态地址。现在已经分类了。