Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.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
Php 如何使用mod_rewrite重定向和重写目录?_Php_Apache_.htaccess_Redirect_Mod Rewrite - Fatal编程技术网

Php 如何使用mod_rewrite重定向和重写目录?

Php 如何使用mod_rewrite重定向和重写目录?,php,apache,.htaccess,redirect,mod-rewrite,Php,Apache,.htaccess,Redirect,Mod Rewrite,除非您知道自己在做什么,否则不要将此标记为重复。有些问题看起来很相似,但不是我想要的 如果用户点击example.com/friendly文件夹,则应在内部将其重定向到example.com/system文件夹 但是,如果用户点击旧的example.com/system文件夹,则应将其从外部重定向到新名称example.com/friendly文件夹 因此,基本上,目录URL必须总是友好的,但要指向旧的。我相信,如果我只是在没有任何条件的情况下制定两条规则,它就会陷入无限循环 我在我的.htac

除非您知道自己在做什么,否则不要将此标记为重复。有些问题看起来很相似,但不是我想要的

如果用户点击
example.com/friendly文件夹
,则应在内部将其重定向到
example.com/system文件夹

但是,如果用户点击旧的
example.com/system文件夹
,则应将其从外部重定向到新名称
example.com/friendly文件夹

因此,基本上,目录URL必须总是友好的,但要指向旧的。我相信,如果我只是在没有任何条件的情况下制定两条规则,它就会陷入无限循环

我在我的.htaccess中尝试过这个

RewriteRule ^friendly-folder(.*)$ system-folder$1 [NC,L] 
RewriteCond %{THE_REQUEST} ^GET\ /system-folder
RewriteRule ^system-folder(.*)$ /friendly-folder$1 [R=301,NC,L]
有效地从内部将友好文件夹重定向到系统文件夹,但不会从外部将系统文件夹重定向到友好文件夹

有什么想法吗?如果您有一种方法可以重定向和重写文件,那将不胜感激

更新 现在我已经尝试了以下配置:

RewriteRule ^friendly-folder(.*)$ system-folder$1 [NC,END] 
RewriteRule ^system-folder(.*)$ friendly-folder$1 [R=301,NC,L]
我得到了这个错误日志:

[Sun Jan 15 18:40:49.765190 2017] [rewrite:trace3] [pid 3936:tid 1896] mod_rewrite.c(477): [client ::1:50822] ::1 - - [localhost/sid#a92bb8][rid#2a52150/initial] [perdir C:/xampp/htdocs/urls/] strip per-dir prefix: C:/xampp/htdocs/urls/system-folder/ -> system-folder/
[Sun Jan 15 18:40:49.765691 2017] [rewrite:trace3] [pid 3936:tid 1896] mod_rewrite.c(477): [client ::1:50822] ::1 - - [localhost/sid#a92bb8][rid#2a52150/initial] [perdir C:/xampp/htdocs/urls/] applying pattern '^friendly-folder(.*)$' to uri 'system-folder/'
[Sun Jan 15 18:40:49.765691 2017] [rewrite:trace3] [pid 3936:tid 1896] mod_rewrite.c(477): [client ::1:50822] ::1 - - [localhost/sid#a92bb8][rid#2a52150/initial] [perdir C:/xampp/htdocs/urls/] strip per-dir prefix: C:/xampp/htdocs/urls/system-folder/ -> system-folder/
[Sun Jan 15 18:40:49.765691 2017] [rewrite:trace3] [pid 3936:tid 1896] mod_rewrite.c(477): [client ::1:50822] ::1 - - [localhost/sid#a92bb8][rid#2a52150/initial] [perdir C:/xampp/htdocs/urls/] applying pattern '^system-folder(.*)$' to uri 'system-folder/'
[Sun Jan 15 18:40:49.765691 2017] [rewrite:trace2] [pid 3936:tid 1896] mod_rewrite.c(477): [client ::1:50822] ::1 - - [localhost/sid#a92bb8][rid#2a52150/initial] [perdir C:/xampp/htdocs/urls/] rewrite 'system-folder/' -> 'friendly-folder/'
[Sun Jan 15 18:40:49.765691 2017] [rewrite:trace3] [pid 3936:tid 1896] mod_rewrite.c(477): [client ::1:50822] ::1 - - [localhost/sid#a92bb8][rid#2a52150/initial] [perdir C:/xampp/htdocs/urls/] add per-dir prefix: friendly-folder/ -> C:/xampp/htdocs/urls/friendly-folder/
[Sun Jan 15 18:40:49.765691 2017] [rewrite:trace2] [pid 3936:tid 1896] mod_rewrite.c(477): [client ::1:50822] ::1 - - [localhost/sid#a92bb8][rid#2a52150/initial] [perdir C:/xampp/htdocs/urls/] explicitly forcing redirect with http://localhost/C:/xampp/htdocs/urls/friendly-folder/
[Sun Jan 15 18:40:49.765691 2017] [rewrite:trace1] [pid 3936:tid 1896] mod_rewrite.c(477): [client ::1:50822] ::1 - - [localhost/sid#a92bb8][rid#2a52150/initial] [perdir C:/xampp/htdocs/urls/] escaping http://localhost/C:/xampp/htdocs/urls/friendly-folder/ for redirect
[Sun Jan 15 18:40:49.765691 2017] [rewrite:trace1] [pid 3936:tid 1896] mod_rewrite.c(477): [client ::1:50822] ::1 - - [localhost/sid#a92bb8][rid#2a52150/initial] [perdir C:/xampp/htdocs/urls/] redirect to http://localhost/C:/xampp/htdocs/urls/friendly-folder/ [REDIRECT/301]
[Sun Jan 15 18:40:49.771194 2017] [core:error] [pid 3936:tid 1896] (20023)The given path was above the root path: [client ::1:50822] AH00127: Cannot map GET /C:/xampp/htdocs/urls/friendly-folder/ HTTP/1.1 to file

不,.htaccess位于这些文件夹的父文件夹内。看起来它应该可以作为一种方法使用,尽管我会在第一个规则中删除RewriteCond并用END替换L标志,因此如果它匹配,则不会处理其他规则。您遇到的问题可能是重写开始时的插入符号“^”,就在“GET”或其他问题之前,您可以将模式设置为“/system folder/”如果您想继续使用这种方法。@SuperDuperApps您可以在更新的尝试中看到错误跟踪。您在第二个“重写规则”的替换开始时删除了正斜杠,正斜杠就是破坏它的原因。放回去!:)不,.htaccess位于这些文件夹的父文件夹内。看起来它应该可以作为一种方法使用,尽管我会在第一个规则中删除RewriteCond并用END替换L标志,因此如果它匹配,则不会处理其他规则。您遇到的问题可能是重写开始时的插入符号“^”,就在“GET”或其他问题之前,您可以将模式设置为“/system folder/”如果您想继续使用这种方法。@SuperDuperApps您可以在更新的尝试中看到错误跟踪。您在第二个“重写规则”的替换开始时删除了正斜杠,正斜杠就是破坏它的原因。放回去!:)