htaccess RewriteRule * .php到/ * /

时间:2012-12-10 11:28:26

标签: .htaccess mod-rewrite seo

我找不到正确的解决方案,所以我希望有人能够在这里帮助我。

我现在有这个文件的网站:

/admin/
/images/
/js/
about.php
index.php
news.php
questions.php

所以我的网址现在是: www.mydomain.com/about.php www.mydomain.com/news.php ...

我想www.mydomain.com/about/,www.mydomain.com/news /,...

我尝试过很多我发现的东西,但是没有一个像它应该的那样工作,或者它会混淆其他东西。

我最接近的是:

RewriteRule about/ about.php
RewriteRule about about.php

但如果我在包含名称的代码中使用某些图像(例如images / about-me.jpg),这也会让人感到困惑 - 可能是因为第二个陈述。

3 个答案:

答案 0 :(得分:2)

通过httpd.conf启用mod_rewrite和.htaccess,然后将此代码放在.htaccess目录下的DOCUMENT_ROOT中:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
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,L,NC]

## To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_FILENAME}.php [L]

答案 1 :(得分:1)

为了简化生活,我将停止使用基于目录的URL

/约/

并使用更简单的文件基础网址

/约

额外的斜线将页面移动到子目录中,页面中的所有相对引用都将中断。

或者,您可以更改所有链接,包含和图片网址,以确保它们都相对于域的根目录。您可以通过在URL之前包含斜杠(/)或使其成为完整URL来实现此目的。

让你的规则更具体:

RewriteRule ^ / about $ about.php

那些额外的^ $表示开始和结束,因此它必须是完全匹配。

答案 2 :(得分:0)

这对我有用

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(about)$ about.php