2014-02-21 104 views
0

如何从您网站的主页网址中删除索引扩展?当我访问我的网站时,网址显示为www.example.com/,然后如果我点击关于该网页的例子,然后点击我对其有href的标志,然后返回到主页,然后显示www。 example.com/index - 是否有一种方法可以简单地将它从索引页面中删除,因为它看起来不太好。如何从我的网站的主页URL扩展中删除/索引?

我使用的是鲈鱼提供的.htaccess文件ifModule删除PHP文件扩展名,如果这有助于:

<IfModule mod_rewrite.c> 
RewriteEngine on 

# Redirect to PHP if it exists. 
# e.g. example.com/foo will display the contents of example.com/foo.php 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.+)$ $1.php [L,QSA] 

</IfModule> 

任何帮助将是巨大的!由于

回答

1

这条规则:

RewriteRule ^(.+)$ $1.php [L,QSA] 

仅执行所请求的URL的内部重新写。这意味着由重写导致的URL更改对客户端不可见。

这意味着如果您的HTML包含正常的“php是可见的”链接,那么用户将在他们的地址中看到的是错误的。因此,您所有的客户端链接必须在重写的no-php版本中

<a href="/">..</a> This is ok - no php visible, user see http://example.com/ 
<a href="/index">..</a> Also ok: http://example.com/index 
<a href="/index.php">..</a> Nope: user sees http://example.com/index.php 
3

最简单的是改变你的标志从index.php/,这是你的网站的根目录的链接...

<a href="/index">...</a> 
... becomes ... 
<a href="/">...</a> 

否则,您可以添加一个Apache重写规则匹配/index这和重定向到/,具有301 HTTP代码:

RewriteRule ^(.*)index$/[R=301,L] 
+0

为什么你需要301?你不能重写吗? –

1

这是规则,你可以放置为你的第一条规则到隐藏/随时随地删除的index.php:

RewriteCond %{THE_REQUEST} /index\.php [NC] 
RewriteRule ^(.*?)index\.php$ /$1 [L,R=301,NC,NE]