mod 重写静默重定向到子目录

发布于 2025-01-08 17:22:26 字数 1459 浏览 2 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

愿与i 2025-01-15 17:22:26

无限循环是因为你毫无疑问地无休止地匹配 myFolder 。需要将其从模式中排除。由于匹配模式是 Perl 兼容的正则表达式,因此您可以使用负的零宽度断言 (?!regex)

将其添加到服务器 conf 或 .htaccess

RewriteEngine On
RewriteRule ^site/((?!myFolder/).*)$ site/myFolder/$1 [L,NC]

The infinite loop is because you are endlessly matching myFolder no doubt. Need to exclude that from the pattern. Since the match pattern is a Perl Compatible Reguar Expression, You can use a negative, zero width assertion (?!regex)

Add this to server conf or .htaccess

RewriteEngine On
RewriteRule ^site/((?!myFolder/).*)$ site/myFolder/$1 [L,NC]
躲猫猫 2025-01-15 17:22:26

这样做:

RewriteEngine on
RewriteBase /

#to prevent looping
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]

#To handle trailing slash problem
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !(?:\.\w+|/)$
RewriteRule (.*) /$1/ [R,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(site)(/.*) $1/myfolder$2 [L,NC]

尽管在您的情况下,

#to prevent looping
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]

仅上述内容并不需要。

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

将负责循环终止。

Do this:

RewriteEngine on
RewriteBase /

#to prevent looping
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]

#To handle trailing slash problem
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !(?:\.\w+|/)$
RewriteRule (.*) /$1/ [R,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(site)(/.*) $1/myfolder$2 [L,NC]

Although in your case

#to prevent looping
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]

will not be required just for the above.

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

will take care of the loop termination.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文