Php 理解。htaccess

Php 理解。htaccess,php,apache,.htaccess,url-rewriting,Php,Apache,.htaccess,Url Rewriting,我正试图用.htaccess更改我的url类型,但我有几个问题。我尝试了一些在线工具,但它们甚至不适合我。所以这里是我要做的 我有像http://mydomain.com/profile.php?u=newuser我想这样做:http://mydomain.com/newuser但到目前为止我还没能做到 这里也是我曾经尝试过的 Options +FollowSymLinks RewriteEngine on RewriteRule (.*) profile.php?u=$1 在对.htacc

我正试图用.htaccess更改我的url类型,但我有几个问题。我尝试了一些在线工具,但它们甚至不适合我。所以这里是我要做的

我有像
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
我注意到页面上的一些图像正在消失,原因是什么?非常感谢你们

这是因为您正在将每个请求发送到profile.php(.*)。这将影响对图像、资源等的所有请求

在规则上方添加此行以排除“真实”资源:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

您已经取得了很大的进步,但现在您正在将域中所有可能的url重写为profile.php,包括像/images/logo.jpg这样的内容

问题是,你想用这个做什么?一个简单的方法是将其更改为:

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) profile.php?u=$1
添加的“RewriteCond”会导致rewriteengine只重写服务器上不存在的URL,因此图像将显示良好

就我个人而言,我认为最好在所有个人资料URL中添加一个/profile/前缀:

Options +FollowSymLinks
RewriteEngine on
RewriteRule profile/(.*) profile.php?u=$1

这将允许您在将来添加新的重写规则(如果需要);如果您的一个用户决定使用名为“profile.php”的用户名或其他与服务器上现有URL冲突的用户名,它也不会给您带来问题。

您是否尝试将as/before(.*)放在前面?你还需要比你现在更具体。有没有办法摆脱这种结构导致的问题?我的第一个例子只重写了不存在的URL,这样就可以了。