我开发了一个巨大的工具工作室,每个工具在 /tools/ 文件夹中都有自己的目录。所以如果你有一个名为example,URL 为 /studio-dir/tools/example/。
我试图从 URL 中隐藏 /tools/ 目录,同时确保 /tools/ 目录之外的其他文件仍然有效。例如,应保留 /index.php 文件和 /admin/ 目录。
我尝试了这个,但它只会导致所有内容出现大量 404 错误。我知道这可能很糟糕,我不喜欢重写 URL。 :P
RewriteCond %{REQUEST_URI} !^/tools/
RewriteRule ^/?([^/]+)$ /tools/$1 [L]
如果你还是很困惑,我想:
http://www.example.com/studio/工具/示例/index.php
能够加载为:
http://www.example.com/studio/示例/index.php
同时仍然保留 /tools/ 目录,并允许加载 /tools/ 目录之外的其他文件。
这可能吗?
你将需要这样的东西:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule /studio/(.*) /studio/tools/$1 [L]
</IfModule>
问题是,如果请求的文件同时位于 studio 文件夹和 tools 文件夹中,它将无法工作。
但没有办法阻止这种情况,因为服务器永远不知道 URL 是指 /studio/tools/ 还是 /studio/
编辑:您可以从可见网址中删除 /tools/,如下所示:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule /studio/(.*) /studio/tools/$1 [L]
RewriteRule /studio/tools/(.*) /studio/$1 [L,R=302]
</IfModule>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)