我使用ExpressionEngine作为我网站的CMS。我用以下内容创建了一个.htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# 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]
# Directs all EE web requests through the site index file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteCond %{HTTP_HOST} ^www.gsmastersinc.com$ [NC]
RewriteRule ^(.*)$ http://gsmastersinc.com/$1 [R=301,L]
</IfModule>
为什么我网站的所有网址都有?在他们中?防爆。 myurl /?/接触。
你可以在这里看到我在说什么:http://gsmastersinc.com,然后点击任何导航链接。悬停时,只有在点击后才会显示?。
我必须拥有?在第13行的/index.php之后,或者链接被破坏,我得到了404.
我整个上午一直在寻找答案,但所有出现的内容都与.NET或类似内容有关。
由于
答案 0 :(得分:1)
更改规则的顺序:
RewriteEngine On
RewriteBase /
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteCond %{HTTP_HOST} ^www.gsmastersinc.com$ [NC]
RewriteRule ^(.*)$ http://gsmastersinc.com/$1 [R=301,L]
# 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]
# Directs all EE web requests through the site index file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]
通常在内部重写规则之前保留301规则。