这是我目前在.htaccess文件中的内容
RewriteEngine On
RewriteRule ^$ /subfolder/ [R=301,L]
这只是重定向到子文件夹,但我还想阻止在浏览器的地址栏中显示子文件夹,我只希望在root(主域页)上发生这种情况,并且所有其他文件请求应该正常,没有任何重定向。
我已经在SO上尝试了很多解决方案,但是他们都不做任何事情,只需重定向到子文件夹,或重定向所有内容,包括我的样式表,并删除所有样式和网站上的所有内容。
重写规则是否可能无法在localhost上运行?重定向确实有效,但我开始怀疑apache可能没有正确设置其他东西(抱歉我的无知,我不太了解apache和重定向)。
编辑:更多细节:这是一个PHP(WordPress)安装,这是root是我想重定向的唯一页面,但是所有其他文件(即CSS样式)调用构建此页面的JS脚本等应该从根目录调用,而不是从子文件夹调用。此外,所有进一步导航到网站上的其他页面应该正常工作,而不会影响我正在设置的.htaccess指令。
答案 0 :(得分:3)
假设subfolder
没有其他.htaccess,您可以在站点根目录中使用此代码.htaccess:
DirectoryIndex index.php
RewriteEngine On
# externally redirect /subfolder/anything to /anything
RewriteCond %{THE_REQUEST} \s/+subfolder/(\S*) [NC]
RewriteRule ^ /%1 [R=301,NE,L]
RewriteRule ^(index\.php)?$ subfolder/index.php [NC,L]
# internally forward /anything to /subfolder/anything
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(?!subfolder/).+$ subfolder/$0 [NC,L]
# rest of the Wordpress rules go here
答案 1 :(得分:1)
如果您尝试过的某些重定向确实发生了,那么您的.htaccess正在运行。
R=301
是重定向的内容,更改了地址栏中的网址。删除它并重写"重写"将执行,执行目标页面而不更改浏览器中的URL。
仅重写基础uri'':
Options -Indexes
RewriteEngine On
RewriteRule ^/?$ /event/index.php [L]