我想用htaccess做2件事,但我無法弄清楚如何做到這一點。 假設我的域名是domain.com 首先,我想強制www。在與301重定向的網址。htaccess子目錄+ 301上的www
另一件事,我的網站是不是在根目錄下舉辦,但/ laravel /公/
所以我想這個子目錄作爲根集,並從URL中移除,如果有人試圖WWW。 domain.com/laravel/public/ => www.domain.com
我該怎麼做? 在此先感謝。
我想用htaccess做2件事,但我無法弄清楚如何做到這一點。 假設我的域名是domain.com 首先,我想強制www。在與301重定向的網址。htaccess子目錄+ 301上的www
另一件事,我的網站是不是在根目錄下舉辦,但/ laravel /公/
所以我想這個子目錄作爲根集,並從URL中移除,如果有人試圖WWW。 domain.com/laravel/public/ => www.domain.com
我該怎麼做? 在此先感謝。
假設你不能更改文檔根目錄指向你的公共文件夾,您可以嘗試添加這些規則文檔根目錄(不是你的公共文件夾):
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]
你需要在你的域的根目錄中有你自己的.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>
的第一條規則是工作就好了。 Bur是第二個,如果我嘗試使用www.domain.com/laravel/public/*或domain.com/laravel/public/*,子目錄部分(/ laravel/public /)不會從url中隱藏。 – rombat
@rombat爲了做到這一點,你需要第二次重定向。 –
好的,謝謝。它會是什麼樣子? (我嚴重缺乏有關使用htaccess的知識)。 – rombat