0

我想对我的网站的 URL 做一些我似乎无法用 .htaccess 文件做的事情。

1 删除文件扩展名feexample.com/file.php应该是example.com/file

2 删除 www。fewww.example.com应该是example.com(我让这部分工作,但如果在我修复之后我会讨厌它并且这不再工作

3 应该没有人能看到index.php 的root fe 的末尾example.com/index.php应该是example.com

4 我的博客页面应该有不错的网址 feexample.com/blog.php?article=the-name-of-article应该是example.com/blog/the-name-of-article

这是我当前的 .htaccess 文件

重写 URL

Options +FollowSymLinks -MultiViews
rewriteengine on
RewriteBase /

## Hide .php extension
## To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,NC]

## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php

## remove www
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]

## remove ugly part of url for blog.php
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
RewriteRule ^blog/(.*)$ blog.php?article=$1 [QSA,L]

当我尝试访问时,blog/the-name-of-article出现内部服务器错误。

4

2 回答 2

0

从您的 .htaccess 的正文和评论看来,我过去会提供它:P

您的 .htaccess 中唯一的错误是规则的排序。始终让它们从最具体到最通用。有这样的代码:

Options +FollowSymLinks -MultiViews
rewriteengine on
RewriteBase /

## remove www
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
## remove ugly part of url for blog.php
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]

RewriteRule ^blog/(.*)$ /blog.php?article=$1 [QSA,L]

## Hide .php extension
## To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,NC]

## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php
于 2013-06-01T04:05:05.687 回答
0

要删除 .php:

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

请参阅使用 .htaccess 删除 .php 扩展而不破坏 DirectoryIndex

编辑 对于漂亮的 URL,请查看本教程: http: //net.tutsplus.com/tutorials/other/using-htaccess-files-for-pretty-urls/

于 2013-05-31T21:13:29.930 回答