Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.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 修改问题_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

Apache 修改问题

Apache 修改问题,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我有以下目录: 我有下面的mod重写,它工作得很好 RewriteRule ^issue-04/?$ /issues/issue-04/ [L] 它只是对用户隐藏问题目录,以便用户只看到: 不过,在我的第04期页面中,我有一个指向绝对URL的链接,如下所示: 我希望通过/issue-04/目录的任何内容都能自行解决。但我想这不是它的工作原理。如何使用一个简单的规则引导/issue-04目录中的任何内容通过看不见的/issues目录 我希望与/issue-04的任何链接都经过/issues/is

我有以下目录:

我有下面的mod重写,它工作得很好

RewriteRule ^issue-04/?$ /issues/issue-04/ [L]
它只是对用户隐藏问题目录,以便用户只看到:

不过,在我的第04期页面中,我有一个指向绝对URL的链接,如下所示:

我希望通过/issue-04/目录的任何内容都能自行解决。但我想这不是它的工作原理。如何使用一个简单的规则引导/issue-04目录中的任何内容通过看不见的/issues目录

我希望与/issue-04的任何链接都经过/issues/issue-04,因此理论上,如果我要以/issue-04目录中的任何文件为目标,我可以通过删除issues父路径来实现

谢谢

就这么简单:

RewriteRule ^issue-04/(.*)$ /issues/issue-04/$1 [L]
但上述情况意味着,您必须在第04期之后使用斜杠:例如,这将起作用http://www.mydomain.com/issue-04/ 以及http://www.mydomain.com/issue-04/goodies/card1.png 当然,但这不会http://www.mydomain.com/issue-04.

要在第04期之后使用斜杠或不使用斜杠,最好将其分为两个规则:第一个规则不使用斜杠,第二个规则处理其余规则-这是最简单的方法:

RewriteRule ^issue-04$ /issues/issue-04/ [L]
RewriteRule ^issue-04/(.*)$ /issues/issue-04/$1 [L]
试一试


它应该在发行后使用斜杠或不使用斜杠,适用于任何发行号,而不仅仅是4。

我喜欢这个解决方案,效果很好,可以很好地应用于我的所有其他问题。好主意,谢谢!也就是说,您可以有一个包含0个或更多字符的部分,这些字符是字母+数字\w或破折号\或点\。或下划线,需要在其前面加斜杠。换句话说,一个文件夹或文件名或只是一个斜杠。您可以在此处添加可能出现在URL中的其他字符,例如,!,~等。这是第一组:/[\w\-\.]。然后,此组本身可能出现零次或多次,这意味着您可以在问题编号为0的组具有任意数量的文件夹或文件名1+组后停止。
RewriteRule ^issue\-([0-9]+)((/[\w\-\._]*)*)$ /issues/issue-$1$2 [L]