.htaccess .htacces重写,删除url的内部部分

.htaccess .htacces重写,删除url的内部部分,.htaccess,mod-rewrite,url-rewriting,.htaccess,Mod Rewrite,Url Rewriting,我知道有很多关于这个话题的问题,我尝试了很多答案,现在我发现onw在工作,但是缺少灵活性 我有一个文件夹结构像 配置文件/用户/用户名 现在我希望url缩短为 /用户名 我得到的工作版本是: RewriteCond %{REQUEST_URI} !^/profile/user/specialuser [NC] RewriteRule ^specialuser/(.*)$ /profile/user/specialuser/$1 [L] 因此,使用这个url,/profile/user/spec

我知道有很多关于这个话题的问题,我尝试了很多答案,现在我发现onw在工作,但是缺少灵活性

我有一个文件夹结构像

配置文件/用户/用户名

现在我希望url缩短为

/用户名

我得到的工作版本是:

RewriteCond %{REQUEST_URI} !^/profile/user/specialuser [NC]
RewriteRule ^specialuser/(.*)$ /profile/user/specialuser/$1 [L]

因此,使用这个url,/profile/user/specialuser被转换为/specialuser,但我如何保持它的灵活性,[specialuser]是所有即将出现的用户名的占位符?

答案已经基本上存在了。您使用另一个捕获组,以及重写字符串中由该捕获组替换的另一个占位符。这个条件对我来说似乎没用,所以我把它去掉了

RewriteRule ^([^/]+)/(.*)$ /profile/user/$1/$2 [L]

[^/]匹配的字符不是/字符。这是为了确保它只匹配url的第一部分。

谢谢您的快速回答。这个版本的问题是,所有其他URL,如/profile/general/或/profile/general/settings/no user之间的URL不再工作,并且我的样式表也找不到了,它们被放在profile文件夹not profile/user!中!。我遗漏了什么吗?添加一个排除那些特定文件夹的条件:RewriteCond%{REQUEST_URI}/css | js | profile | unicorns但这意味着排除除用户之外的每个文件夹,当/user是URL的一部分时,是否有一种方法可以直接重写,如果您想在服务器上将example.com/username重写为/profile/user/username/。。。您对用户名一无所知,只知道它不包含斜杠。您可能可以对输入的每个url执行不必要的“此目录是否存在”检查。它不必要地增加了更多的开销。这仅仅是你为自己制造的麻烦,因为你决定需要不同的URL。真的感谢你的耐心!我想用另一种方式重写。我有/profile/user/username/,我希望它是/username/。所以每次,/profile/user/在路径中时,它都应该被缩短。。。毫无例外。