htaccess url转发到带有和不带斜杠的php文件

时间:2012-08-12 03:11:36

标签: php .htaccess rewrite hyperlink

我现在一直在找这样的东西(当然是有效的)。如果有人能够最终生成这段代码,那就太好了。

目前,我一直在努力:

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
RewriteRule ^(.*)\/$ $1.php [NC]

它工作得很好,但没有拖尾斜线就行不通。令人讨厌的是,它将所有包含的文件视为一个文件夹转发,因此我永远将../添加到所有css和js文件中。

除此之外,它的工作原理如下(按预期):

  1. 如果没有www,则会添加
  2. http://www.example.com/page.php将转到page.php
  3. http://www.example.com/page/将转到page.php
  4. http://www.example.com/page会在找到文件夹
  5. 时出现404错误

    我通过谷歌搜索尝试了大量不同的东西,但没有成功。我需要它做的就是喜欢没有尾部斜线的url,无论是将它转发到尾部斜杠还是两者都喜欢。整个想法是它读取.php文件并在窗口中显示为一个很好的SEO类型链接:www.example.com/page

1 个答案:

答案 0 :(得分:1)

Options +FollowSymlinks
RewriteEngine On
DirectorySlash Off
RewriteBase /
RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
RewriteRule ^(.*)\/(\?.*)?$ $1$2 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ $1.php [NC]

<IfModule mod_rewrite.c>
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

这很有效。回答这个问题。任何人都可以改进吗?