0

如果子域不在我的 URL(或其“www”)中,我会尝试强制使用下划线作为子域。我昨天绕着圈子试图理解这一点,这是我到目前为止所拥有的:-

规则1。删除文件扩展名 - 有效,直到我将规则 2 添加到 .htaccess。

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

规则 #2 如果不存在子域,则自动使用 _ 例如:_.mysite.com

RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteRule ^(.*)$ http://_.%{HTTP_HOST}/$1 [L,R=301]

规则 2 有效,但它将 .php 添加回文件名的末尾?

我已经尝试将“_”规则移到扩展规则之上,但这并没有什么不同。

任何帮助都会很感激=)

4

1 回答 1

0

To remove ".php" extension on second rule you have to add ".php" as a optional parameter:

RewriteRule ^(.*)(\.php)|(.*)$ http://_.%{HTTP_HOST}/$1$3 [L,R=301]

This way, no matter your URI have ".php" or not your request will always be redirected without ".php" extension.

于 2013-10-30T12:09:07.333 回答