Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess 类似Twitter的URL,但带有@';s_.htaccess_Url - Fatal编程技术网

.htaccess 类似Twitter的URL,但带有@';s

.htaccess 类似Twitter的URL,但带有@';s,.htaccess,url,.htaccess,Url,我正在制作一个社交网站,但我无法做到: 如果url是http://url.com/@用户名,我希望它显示http://url.com/user?u=username页面,但显示http://url.com/@用户名URL 但是,如果开始时没有@,请将其视为常规URL 这是我的.htaccess文件: Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST

我正在制作一个社交网站,但我无法做到: 如果url是
http://url.com/@用户名
,我希望它显示
http://url.com/user?u=username
页面,但显示
http://url.com/@用户名
URL

但是,如果开始时没有
@
,请将其视为常规URL

这是我的
.htaccess
文件:

Options +FollowSymLinks

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [NC,L]

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^/(\d+)*$ ./user.php?u=$1

最后三行是我尝试过的,但是它并没有像我希望的那样工作。我认为它会起作用,因为
RewriteRule^/(\d+)*$
在斜杠后获取任何URI,并将其重写为
.user.php?u=*
,但这不起作用,所以我正在寻找一些关于下一步做什么的建议。

根据我对您问题的理解,这应该会起作用

Options +FollowSymLinks

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^@(.+?)$ user.php?u=$1 [NC,L]
它要求在用户名前加一个@,并将其作为GET变量(u)传递。但是,用户可以添加其他字符,这可能会将其混淆为用户名

/@用户名/松饼

但是如果您想要这样做,并且每个用户名都有页面(例如,/@username/info,/@username/about等),您可以在PHP中使用()函数

如果您只想让它获取用户名,而不想获取其他内容,您可以尝试

RewriteRule ^@([A-Za-z0-9]+)$ user.php?u=$1 [NC,L]

希望这有帮助!:)

比如说
/@username如何?关于
?您可以使用PHP的explode函数。数一数看是否有超过1个部分(第1部分=用户名,第2部分=页面等),然后将第2部分用作页面,如果没有,则显示主页。好的,最后一件事,如果我的URL是
http://localhost/@
,它给我一个404警告,如果@之后没有任何东西,是否可以这样做,它会将其重定向回index?相当简单,将其添加到重写url RewriteRule^@$/index.php[r=301,nc]的末尾