如何使用htaccess获取没有扩展名的当前文件名?

时间:2018-03-27 15:59:15

标签: php apache .htaccess mod-rewrite url-rewriting

我有以下代码:

RewriteCond %{REQUEST_URI} !/$
RewriteCond %{HTTP_HOST} !^domain\.co
RewriteCond %{HTTP_HOST} !^[^.]+\.(domain\.co)$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^ /somefile.php [L]

somefile的位需要是没有扩展名的用户所在的文件名。因此,如果它们位于example.com/file,则应检索file

我尝试过使用下面的代码,但它似乎不起作用:

RewriteCond %{REQUEST_URI} !/$
RewriteCond %{HTTP_HOST} !^domain\.co
RewriteCond %{HTTP_HOST} !^[^.]+\.(domain\.co)$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^ /$.php [L]

重写规则中的.php位不应该是检索到的文件名的一部分,而是手动添加的。

如果没有获得扩展程序就无法做到这一点,无论扩展程序如何,都可以这样做?

1 个答案:

答案 0 :(得分:0)

您可以将此规则添加到现有规则之上,以添加.php扩展名:

RewriteEngine On

# add .php extension if corresponding .php file exists
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

RewriteCond %{HTTP_HOST} !domain\.co$ [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !/$ /somefile.php [L]