我想让例如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。我假定您正在尝试在第二个重写组中做一些不同的事情,但不清楚是什么(提示:对您正在做的事情进行一两个注释将非常有帮助)。