【发布时间】:2012-02-22 03:21:28
【问题描述】:
我正在尝试在我的 .htaccess 文件中使用 RewriteRule 将 example.com/page 重定向到 example.com/page.php(或将 .php 添加到任何没有扩展名的请求文件中.
我试过了:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !(.*)\.php
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^/.]+)$ $1.php [R] #I also tried ^(.+)$ with no effect
来自"Spoofing" a 404 not found error with .htaccess
我在我的 .htaccess 中没有其他 RewriteRules 进行了尝试,但它仍然只是通过 ErrorDocument 解决了 404 错误页面。如果找不到请求的页面,我尝试使用的所有其他规则也会被完全跳过。如果请求的 url 解析为现有页面或目录,我指定的任何规则都有效。
我有一个 Godaddy 共享托管 Linux 服务器。我很确定我无法编辑我的 httpd.conf 文件。
我想知道是否有人可以告诉我为什么我的RewriteRules 在原始请求不是文件或目录时被忽略 - 当它不存在时。
感谢您的帮助。
编辑:
我现在看到,如果我去 mysite.com/index.php RewriteRule 工作。如果我去 mysite.com/index RewriteRule 不起作用。如果我转到一个根本不存在的页面 - mysite.com/asdfasdfsadf 那么我的 RewriteRule 工作。所以它只会在现有 url 的无扩展版本上失败。
【问题讨论】:
标签: .htaccess mod-rewrite apache