如何在localhost上允许子域名的无扩展URL?

时间:2015-02-25 11:47:19

标签: php apache .htaccess url-rewriting 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/$1 [L,NC]

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

我在localhost上使用类似的技术,但它不起作用。我被定向到localhost(而不是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/$1 [L,NC]

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

如何使其与我的制作网站的行为相似?非常感谢你!

1 个答案:

答案 0 :(得分:0)

我最终将AllowOverride All添加到vhost设置中,之后事情进展顺利。

<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>