我的.htaccess文件中有一个重写,可以将例子从example.com发送到example.com/home
RewriteEngine On
RewriteBase /
RewriteRule ^$ home [L,R=301]
如何执行此操作,然后从网址栏中删除字符串“home”,使其显示为example.com?我对家里的任何子目录都不感兴趣,因为网站的其他部分都存在于根目录中。
完整背景
# Perch Runway
<IfModule mod_rewrite.c>
# Turn on RewriteEngine
RewriteEngine On
# When user goes to the home page send to .com/home and strip /home
RewriteBase /
RewriteRule ^$ home [L,R=301]
# Cache Busting
RewriteRule (assets[/])([^.]*).min.+.(css|js)$ $1$2.min.$3
# Perch Runway
RewriteCond %{REQUEST_URI} !^/login
RewriteCond %{REQUEST_URI} !(/sub-directory-one|/sub-directory-two) [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . /login/core/runway/start.php [L]
</IfModule>
答案 0 :(得分:2)
使用以下规则,
RewriteEngine On
RewriteBase /
RewriteRule !home /home%{REQUEST_URI} [L]
答案 1 :(得分:1)
当您使用R|redirect
标志时,Apache会向客户端发送重定向状态。然后,客户端请求新网址(例如http://www.example.com/home
)并显示新网址。
要避免此行为,您不会发送重定向(例如R
),而是在内部静默重写到新网址。这样Apache就可以在不通知客户端的情况下发送目标的内容。
要从/
内部重写为/home
,请保留现有规则,但删除R
标记
RewriteRule ^$ /home [L]