如何允许本地主机上的子域使用无扩展名 url?

How to allow extensionless url for subdomains on localhost?

我已经用 vhost 设置了子域 m.localhost。 m.locahost 指向 htdocs/m/ 文件夹

我希望 m.localhost/pagem.localhost/page.php 都正常工作并显示为 m.localhost/page。在我的生产站点上,我的 .htaccess 文件中有类似这样的内容并且工作正常:

RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} \s/+(.*?/)?(?:index)?(.*?)\.php[\s?] [NC]
RewriteRule ^ /%1%2 [R=302,L,NE]    

RewriteCond %{HTTP_HOST} ^m\.mysite\.com$ [NC]
RewriteRule ^((?!m/).*)$ m/ [L,NC]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/\.php -f [NC]
RewriteRule ^(.+?)/?$ /.php [L]

我在本地主机上使用了类似的技术,但它不起作用。我被定向到本地主机(不是 m.)。但是如果我删除 .htaccess 文件,.php 文件工作正常。

RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} \s/+(.*?/)?(?:index)?(.*?)\.php[\s?] [NC]
RewriteRule ^ /%1%2 [R=302,L,NE]

RewriteCond %{HTTP_HOST} ^m\.localhost$ [NC]
RewriteRule ^((?!m/).*)$ m/ [L,NC]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/\.php -f [NC]
RewriteRule ^(.+?)/?$ /.php [L]

如何才能使它的行为与我的生产站点相似?非常感谢!

我终于在 vhost 设置中添加了 AllowOverride All,之后一切正常。

<VirtualHost *:80>
    ServerName m.localhost
    DocumentRoot "C:/xampp/htdocs/m/"   
    <Directory "C:/xampp/htdocs/m">
        Options Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>