尝试使用mod-rewrite来更改地址栏与正在加载的实际页面。当我有一个要使用的查询字符串时它很有用,但我需要在没有查询字符串的情况下完成它,只需要一个直接的漂亮网址。
似乎没有查询字符串,直接mod_rewrites到文件只显示带扩展名的实际文件名。
这是我的htaccess的样子:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ $1/ [L,R=301]
这有效:
RewriteRule ^admin/account/([^/]*)/$ /adminconfig/account.php?id=$1 [L]
这不是:
RewriteRule ^admin/account/$ /adminconfig/account.php [L]
我发现的地址栏中发生了什么:
example.com/adminconfig/account.php/
应该是:
example.com/admin/account/
答案 0 :(得分:1)
你需要像这样做你的规则。我还确保多视图关闭
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^admin/([^/]+)/?$ /adminconfig/$1.php [L]
此规则应允许您在地址栏中使用如下所示的网址
example.com/admin/account/