我使用共享托管帐户(无法访问更优选的解决方案,因此我必须使用.htaccess
规则。
当我实现漂亮的网址以删除公用文件夹时,我在子域名上出现HTTP 500
错误。
我在.htaccess
中不够精通,无法正确制定必要的重写规则。有人可以帮忙吗?我的.htaccess
看起来如下:
AddType application/x-httpd-php55 .php
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
编辑:
我想要完成的事情:
http://example.com代替http://example.com/public/
从xsubdomain.example.com
中排除当我尝试访问子域时,我确实看到了500错误。当我 检查服务器的主错误_log它告诉我我的请求是 超过10个内部重定向的限制。
我发现你在public_html目录中有一个.htaccess文件 这是负责任的。当我暂时重命名该文件时,我可以 访问这两个子域。
您似乎只需将.htaccess规则设置为 影响主目录或排除子域
Web Root .htacess
RewriteEngine On
# Don't do anything if it is blog subdomain for example.
RewriteCond %{HTTP_HOST} ^blog\. [NC]
RewriteRule ^ - [L]
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /public/([^&\ ]+)
RewriteRule .* /%1? [R=301,L]
RewriteCond%{HTTP_HOST} ^(www。)?example.com $ [NC] RewriteRule ^(。*)/?$ public / $ 1 [L]
/ public / .htaccess
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
答案 0 :(得分:1)
如果您只想在主域中使用,请在.htaccess中使用此功能。
AddType application/x-httpd-php55 .php
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
#Don't do anything if it is blog subdomain for example.
RewriteCond %{HTTP_HOST} ^blog\. [NC]
RewriteRule ^ - [L]
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /public/([^&\ ]+)
RewriteRule .* /%1? [R=301,L]
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ public/index.php [L]
</IfModule>
您可以执行此操作,因此如果您在公共场所输入,则会在没有公开的情况下重定向到网址。如果这对您有用,请告诉我。
答案 1 :(得分:0)
使用.htaccess文件不是更好的方法。要从您的网址中删除公开,您应该在本地服务器中创建一个虚拟主机,文档根目录应该是这样的DocumentRoot "h:\wamp\www\your_project_name\public"
请参阅this如何在wamp中创建虚拟主机。