我想用htaccess做两件事,但我无法弄清楚如何做到这一点。 我们说我的域名是domain.com 首先,我想强迫www。在具有301重定向的网址中。
另一件事,我的网站不是在根目录中托管,而是在/ laravel / public /
中所以我想将此子目录设置为root,如果有人尝试www.domain.com/laravel/public/ =>,请将其从网址中删除。 www.domain.com
我该怎么做? 提前谢谢。
答案 0 :(得分:1)
假设您无法将文档根目录更改为指向公用文件夹,可以尝试将这些规则添加到文档根目录(而不是您的公用文件夹):
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [L,R=301]
RewriteCond %{THE_REQUEST} \ /+lavarel/public/([^\?\ ]*)
RewriteRule ^ /%1 [L,R=301]
RewriteCond %{REQUEST_URI} !^/laravel/public/
RewriteRule ^(.*)$ /laravel/public/$1 [L]
答案 1 :(得分:0)
您需要在域的根目录中拥有自己的.htaccess
文件,以及laravel/public
目录中的另一个文件(那里已有一个,但您需要修改它)
以下是我在测试服务器上的两个文件。
<强> /.htaccess
强>
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Rewrite requests to the laravel/public index
RewriteCond %{REQUEST_URI} !^/laravel/public/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /laravel/public/$1 [L]
</IfModule>
<强> /laravel/public/.htaccess
强>
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Force www. (also strips laravel/public)
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
# Strip laravel/public, prevent loops
RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteCond %{REQUEST_URI} ^/laravel/public(/.+)/? [NC]
RewriteRule ^ %1 [R=301,L]
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>