0

我在具有以下 htaccess 的服务器上工作:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule .* index.php
RewriteRule  ^[^/]*\.html$ index.php
RewriteRule ^/(typo3|typo3temp|typo3conf|t3lib|tslib|fileadmin|uploads|showpic\.php)/ - [L]
RewriteRule ^/(typo3|typo3temp|typo3conf|t3lib|tslib|fileadmin|uploads|showpic\.php)/.*$ - [L]

现在他们要求我在他们的服务器中准备一个静态页面,我们称之为http://www.myserver.com/mystaticpage.html

问题是当我尝试访问该 url 时,它会重定向到 index.php。我怎样才能改变 htacces 文件来解决这个问题而不会弄乱已安装的 CMS?

4

1 回答 1

1

尝试这个:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond ${REQUEST_URI} !^/(typo3|typo3temp|typo3conf|t3lib|tslib|fileadmin|uploads|showpic\.php)
RewriteRule .* index.php
  • 您之前使用的规则是多余的:如果.*被重写为 index.php 那为什么还要重写^[^/]*\.html$ index.php它呢?它已经符合以前的规则...
  • 它们也重叠 - 因为这三个RewriteCond条件仅适用于第一条规则。所以第二条规则也适用于磁盘上的静态文件。
  • 而且,最后列出的两条规则也没有任何作用。要么你需要先列出它们,要么根本不需要。我将它们转换为额外的RewriteCond,因为它们只是试图避免重写某些 uri
于 2012-06-26T10:23:52.170 回答