我在生产Laravel网站时,到index.php,这里是我的问题有4个简单的URL测试说明:如何避免重定向试图访问非WWW网址
- 访问:https://www.my-website.kr/
结果:https://www.my-website.kr/(都好)
访问:再次(主页,但也不能加www
结果:https://www.my-website.kr/(都好,重定向我的非WWW 网址到www)
结果: https://www.my-website.kr/subpage(全部不错)
- 结果:https://www.my-website.kr/index.php(不好,我不想这样的index.php)
这最后一次测试它的人,我不能修复,这是很烦人的。当我访问没有www的子页面时;如果唯一的解决方案是重新定向到主页,但至少没有index.php这是可以的,这对SEO来说很糟糕。
我知道这些关于htaccess的问题已经被回答了很多次,但我失去了希望......即使是我的专用服务器的技术支持也无法正确回答我的问题。
我目前有两个htaccess文件;一个坐落在我的public_html根/具有以下内容:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP_HOST} ^domain\.kr [NC]
RewriteRule ^(.*)$ https://www.domain.co.kr/$1 [L,R=301,NC]
RewriteCond %{HTTP_HOST} ^domain\.co\.kr [NC]
RewriteRule ^(.*)$ https://www.domain.co.kr/$1 [L,R=301,NC]
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
而另一个public_html下/公众默认的Laravel的htaccess的内容:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule^index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
你可能会问我为什么有我两个htaccess在两个不同的位置。我也想知道。事情是我已经做了很多测试,并且我发现将www/https规则直接放在根文件夹类型上效果更好。但我可能是错的。
再次抱歉,如果这个问题已被问及百万次,但我找不到适合我的答案。
在此先感谢您的任何帮助。
感谢您的回答@胶囊,它看起来像我没有得到这讨厌的index.php了,这是伟大的,因为这是一个大问题。但是,似乎www重定向不起作用。我尝试了关于mod_rewrite日志的建议,但我不确定我应该寻找什么。但我会继续研究它。自从我最大的担忧消失后,我可能会将您的答案标记为已解决。 – Valentincognito
奇怪,因为你不能真正变得更简单,第二条规则,这是应该照顾非www到www重定向。很高兴收到您有关任何进一步调查结果的回复。 – Capsule
好吧,最后我认为最好把这两条规则放在框架的公共文件夹的htaccess中,但作为你提到的第一条规则。奇怪,因为public_html根目录下的htaccess似乎起初工作。也许我已经在我做过的很多测试中迷失了......无论如何现在都好,非常感谢你! – Valentincognito