我的整个.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和斜杠可以创建重复的网址和其他搜索引擎问题。也许保留现状是最好的吗?
有人能给我一些关于在这里使用的代码的见解吗?
答案 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
适合我! :)