.htaccess删除.php并强制尾随斜杠

时间:2013-09-11 03:18:27

标签: php apache .htaccess mod-rewrite

我的根文件夹中有文件。 jobs.phpcontact.php

我希望能够使用.htaccess删除.php扩展名并强制使用尾部斜杠/。因此,www.domain.com/jobs/www.domain.com/contact/会转到各自的页面。

另外,我希望jobs.domain.com指向www.domain.com/jobs/

<IfModule mod_rewrite.c>
    Options +SymLinksIfOwnerMatch
    RewriteEngine On
    RewriteBase /

    RewriteRule ^(rosquillos)/$ $1 [L,R=301,NC]

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}\.php -f
    RewriteRule ^(.*)$ $1.php
</IfModule>

这是我到目前为止所做的,也是我尝试过的。我似乎无法让它发挥作用。

任何帮助都会很棒。

编辑:

我想重新解释一下我的问题。现有代码为我删除了.php扩展,我现在真正需要的是将子域指向正确文件的附加规则:即。 jobs.domain.com指向jobs.php。我可以没有拖尾的斜线生活。

1 个答案:

答案 0 :(得分:2)

你的情况:

RewriteCond %{REQUEST_FILENAME}\.php -f
如果您的网址以尾部斜杠结尾,

将失败。但是,如果您只有jobscontact,那么您只需要:

RewriteEngine On

# add trailing slash and redirect browser
RewriteRule ^([^/]+)$ /$1/ [L,R=301]

RewriteRule ^([^/]+)/$ /$1.php [L]

# redirect direct access to php files:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+)\.php
RewriteRule ^ /%1/ [L,R=301]

哦,我忘了:

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.com$ [NC]
RewriteCond %{DOCUMENT_ROOT}/%1.php -f
RewriteRule ^ /%1.php [L]

假设*.domain.comwww.domain.com具有相同的文档根目录。