如何在httpd.conf中将我的虚拟主机modrewrite转换为使用.htaccess?

时间:2013-07-09 17:30:07

标签: apache .htaccess mod-rewrite virtualhost httpd.conf

我正在转移到一个不允许访问编辑httpd.conf或vhosts.conf的新主机,所以我需要使用.htaccess。

这是我现有的虚拟主机conf:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.dev

    DocumentRoot /path/to/html       
    Alias /sitemap.xml /path/to/html/sitemap.php
    Alias /sitemap.xml.gz /path/to/html/sitemap.php
    AliasMatch ^/sitemap(.*).xml /path/to/html/sitemap.php
    AliasMatch ^/sitemap(.*).xml.gz /path/to/html/sitemap.php
    Alias /robots.txt /path/to/html/robots.php
    AliasMatch ^/robots.txt /path/to/html/robots.php

    <Directory /path/to/html>
        AllowOverride none
        Options all
        Order allow,deny
        Allow from all
        Deny from none

        <IfModule mod_rewrite.c>
            Options +FollowSymLinks -MultiViews
            RewriteEngine On
            # The following redirects all directories to root using PATH variables
            # Ex. /abc/def/ redirects to /index.php/abc/def/
            RewriteCond %{REQUEST_URI} !=/server-status
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteRule (.*) index.php/$1 [L]
        </IfModule>
    </Directory>
</VirtualHost>

目标是使用htaccess进行相同的交互。

我正在寻找的主要互动是:

sitemap.xml => sitemap.php
sitemap-abc.xml => sitemap.php
sitemap-___.xml => sitemap.php
sitemap-xyz.xml => sitemap.php
robots.txt => robots.php

/abc/def/ => /index.php/abc/def/

上面的vhosts.conf在我的旧主机上运行得很好,但是我不确定如何在我的新主机上只用htaccess执行它。

1 个答案:

答案 0 :(得分:0)

原来我的具体问题是托管配置而不是mod_rewrite问题。但对于其他人来说,这是我的解决方案:

/path/to/html/.htaccess

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]