1

我正在尝试将请求http://www.domain.tld/folder/filename.php重定向301http://www.domain.tld/folder/filename(即没有 php),并且在这样做时遇到了一些困难。

这是我的.htaccess:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\.php$
RewriteRule (.*) $1.php [L]

RewriteRule (.*)\.php $1 [L,R=301]

第一个 RewriteRule 按我的预期工作。第二……没那么多。

http://www.domain.tld/folder/filename.php作为被301重定向到的书面请求http://www.domain.tld/home/username/public_html/folder/filename

如果我将最后一个 RewriteRule 更改为 do/$1而不是$1我被定向到http://www.domain.tld/filename而不是http://www.domain.tld/folder/filename

有任何想法吗?

谢谢!

4

1 回答 1

2

像这样保留 .htaccess 以隐藏.php扩展名:

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[\s?] [NC]
RewriteRule ^ %1 [R=301,L]

# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ $1.php [L]
于 2013-08-26T16:23:54.267 回答