0

我正在移动到一个不允许访问编辑 httpd.conf 或 vhosts.conf 的新主机,因此我需要改用 .htaccess。

这是我现有的虚拟主机配置:

<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 的新主机上执行它。

4

1 回答 1

0

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

/path/to/html/.htaccess

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
于 2013-07-09T21:05:47.190 回答