我通过表达式创建了一个网站,在htaccess中我需要删除index.php并将www添加到无www url' s。 这是我现在的.htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# Add www to url
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
# Directs all EE web requests through the site index file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
# Removes index.php from ExpressionEngine URLs
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteCond %{REQUEST_URI} !/system/.* [NC]
RewriteRule (.*?)/index\.php/*(.*) /$1$2 [R=301,NE,L]
</IfModule>
但是上面的代码有一些问题,当url有www本身并且没有index.php在任何地方并且一切都很好,但是当我从url中删除www来测试&#34;添加WWW&#34;部分它不再起作用,网址损坏了这个:
http://www.example.com/index.php?/segment1/segment2/
一个index.php出现了。我不知道该怎么做,任何帮助都会得到满足
答案 0 :(得分:1)
试试这个..
RewriteEngine On
#Redirect non-www to www
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
它会从网址中删除index.php
并添加www
作为前缀。
答案 1 :(得分:0)
www重定向可能不起作用,因为没有通配符,保持简单并指定您的域名:
# Redirect to www
# -------------------
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
我希望你能以错误的方式删除和添加index.php,如果在URL中指定,我首先重定向它,然后将其添加到隐藏中:
# Redirect specific index.php requests in URL
# ------------------------------
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteCond %{REQUEST_URI} !/system/.* [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,L]
# Directs all EE web requests through the site index file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
还可以尝试使用和不使用?在这一行,根据服务器设置,可能不需要这样做:
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
或
RewriteRule ^(.*)$ index.php/$1 [L,QSA]