我安装了Magento,想知道如何将domain.tld / index.php重定向到domain.tld?
我想删除index.php然后将301删回root。我有很多旧的链接,它给了我重复的内容和丑陋的网址等旧链接的例子:
domain.tld/index.php?controller=best_sales
在.htaccess中,我有以下内容,但它无效
RewriteRule .* index.php [L]
谢谢:)
编辑:
感谢你们两位的答案,但我仍然无法让它发挥作用。 在尝试进行任何更改时,我得到404 - Not Found。
这是我的完整.htaccess,可能有一些错误或错过配置无法使其正常工作?
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
// REMOVE HOME REWRITE FROM MAGENTO
RewriteRule ^home/?$ /? [R=301,L,NC]
// ADD WWW TO NONE WWW FOR BOTH HTTPS AND NONE HTTPS
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
// REDIRECT ALL .HTML FILES AND ALL .HTML/ FILES WITH TRAILING SLASH
RewriteRule ^google[0-9a-f]+.html$ - [L]
RewriteRule (.+)\.html$ /$1/ [L,R=301]
RewriteRule (.+)\.html\/$ /$1/ [L,R=301]
// ADD TRAILING SLASH
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
// TRAILING SLASH CHECK
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ $1/ [L,R=301]
// CHECK IF REDIRECT POINTS TO A VALID FILE
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
// SEND TO INDEX.PHP FOR CLEAN URLS
#RewriteRule ^(.*)$ index.php? /$1 [L,QSA]
#REWRITE EVERYTHING ELSE TO INDEX.PHP
RewriteRule .* index.php [L]
答案 0 :(得分:2)
将此规则作为您的第一条规则保持在RewriteEngine On
行以下,从您的网址中删除index.php
:
DirectoryIndex index.php
RewriteEngine On
RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteRule ^(.*?)index\.php$ /$1 [L,R=302,NC,NE]
答案 1 :(得分:0)
我假设没有任何规则,它已经显示了domain.tld/?controller=best_unicorns
的内容。如果查询字符串之前的网址以' index.php' 结尾,则您希望重定向到没有index.php的网址。实际上,域名和查询字符串之间的部分只包含' index.php'。
您需要使用R
(重定向)标记:
RewriteRule ^index\.php$ / [R,L]
删除您的其他尝试。如果此规则有效,请将标记更改为[R=301,L]
以使其成为永久标记。这样,浏览器和搜索引擎都可以在一个地方查看。