我正在尝试使用.htaccess更改我的网址类型,但我遇到了一些问题。我尝试了一些在线工具,但它们甚至不适合我。所以这就是我要做的事情;
我有像http://mydomain.com/profile.php?u=newuser
这样的网页,我想这样做:http://mydomain.com/newuser
但到目前为止我无法实现它。
这也是我尝试过的;
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) profile.php?u=$1
在.htaccess中进行更改后,我还需要对我的php文件进行任何更改吗?此外,当试图打开http://mydomain.com/newuser
时,我注意到页面上的一些图像正在消失,这是什么原因?非常感谢你们!
答案 0 :(得分:2)
这是因为您要将每个请求发送到profile.php(。*)。这将影响对图像,资源等的所有请求。
在规则上方添加此行以排除“真实”资源:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
答案 1 :(得分:2)
你已经走得很远了,但现在你要将你域中的每个可能的URL重写为profile.php,包括像/images/logo.jpg这样的东西。
问题是,你想用这个做什么?一个简单的方法是改变它:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) profile.php?u=$1
添加的“RewriteCond”会导致重写引擎仅重写重写服务器上不存在的网址,因此您的图片会显示正常。
就我个人而言,我认为在您的所有个人资料网址中添加/个人资料/前缀可能会更好:
Options +FollowSymLinks
RewriteEngine on
RewriteRule profile/(.*) profile.php?u=$1
如果您需要,这将允许您将来添加新的重写规则;如果您的某个用户决定使用名为“profile.php”的用户名或其他与服务器上现有网址冲突的内容,也不会给您带来任何问题。