.htaccess:添加尾部斜杠

时间:2015-01-02 03:35:23

标签: php apache .htaccess mod-rewrite

我的整个.htaccess文件包含以下代码:

Options +FollowSymLinks -MultiViews
rewriteEngine on
RewriteBase /

## Hide .php extension by external redirection:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,NC]

## Internally redirect to .php extension:
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php

## Redirect to index when page is missing.
ErrorDocument 404 http://www.domain.com

它(最后!)最后删除* .php扩展名。没什么好抱怨的。但我一直在努力插入额外的代码来添加尾部斜杠(/)。似乎没什么用。有时CSS会关闭,并且在%1之后添加斜杠会导致错误。

此外,我已经在线阅读各种故事,使用Multiviews和斜杠可以创建重复的网址和其他搜索引擎问题。也许保留现状是最好的吗?

有人能给我一些关于在这里使用的代码的见解吗?

2 个答案:

答案 0 :(得分:0)

需要%1中的尾部斜杠。破碎的CSS可能是因为您在内容中使用了相对URL,并且尾部斜杠更改了URI基础。要解决此问题,您需要将所有链接设为绝对网址或为网页标题添加基础:

<base href="/" />

然后你需要更改处理添加php的内部重写,如下所示:

Options +FollowSymLinks -MultiViews
RewriteEngine on
RewriteBase /

## Hide .php extension by external redirection:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+([^.]+)\.php [NC]
RewriteRule ^ /%1/ [R,NC,L]

## Internally redirect to .php extension:
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ /$1.php [L]

## Redirect to index when page is missing.
ErrorDocument 404 http://www.domain.com

答案 1 :(得分:0)

似乎有很多代码可以删除.php,使用

就足够了
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php

至于Slash部分,它真的取决于你的设置。

但是如果您的网站来自index.php

例如:

$key = $_GET["key"];

if($key = "about"){
  include("about.php");
}
else if($key = "contact"){
  include("contact.php");
}
else{
  include("index.php");
}

并在.htacces中使用以下代码

#RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?key=$1
#RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?key=$1

适合我! :)