.htaccess rewrite = 404 page


.htaccess rewrite = 404 page

我想让例如www.mydomain.com/about.php到www.mydomain.com/about.

基于一些博客阅读,

这里是我的httpd.conf

<Directory "var/www/mydomain">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Allow from all
Order allow, deny
RewriteEngine On
</Directory>

我的。htaccess文件

Order deny,allow
DirectoryIndex index.php
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}'.php -f
RewriteRule ^([^/]+)/$ $1.php
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !('.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]

www.mydomain.com/about.php仍然可以工作,但是/about有404 URL Not Found页面

上面的配置有问题吗?

在最后一行,尝试:

RewriteRule ^(.*)$     $1.php [L]

(注意^和去掉的R=301)

如果它不起作用,请尝试删除.htaccess文件中所有先前的行。只保留RewriteEngine On

您的前两个rewriterrules要求在名称后面有一个/作为最后一个字符。你可能想让它成为可选的:

RewriteRule ^([^/]+)/?$ $1.php
RewriteRule ^([^/]+)/([^/]+)/?$ /$1/$2.php

这可能就是为什么你没有在第一个重写组中匹配/about。我假定您正在尝试在第二个重写组中做一些不同的事情,但不清楚是什么(提示:对您正在做的事情进行一两个注释将非常有帮助)。