如何从我的网站的主页URL扩展名中删除/索引?

时间:2014-02-21 21:35:33

标签: php .htaccess url

您如何从网站的主页网址中删除索引扩展名?当我访问我的网站时,URL显示为www.example.com/然后如果我点击about页面上的例子,然后点击我有href的徽标,然后返回主页,然后显示www。 example.com/index - 有没有办法简单地从索引页面中删除它,因为它看起来不太好。

我正在使用Perch提供的.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>

任何帮助都会很棒!感谢

3 个答案:

答案 0 :(得分:3)

最简单的方法是将徽标上的链接从index.php更改为/,这是您网站的根目录......

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

否则,您可以添加与/index匹配的Apache RewriteRule并重定向到/,并使用301 HTTP代码:

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

答案 1 :(得分:1)

这是您可以将第一条规则放置在任何地方隐藏/删除index.php的规则:

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

答案 2 :(得分:1)

这条规则:

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

仅对请求的URL执行内部重写。这意味着对重写产生的URL的任何更改都不会对客户端可见。

这意味着如果您的HTML包含正常的“php is visible”链接,那么用户将在其地址中看到的内容不好。因此,所有客户端链接必须在重写的非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