Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.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
Apache .htaccess重写类似facebook的用户名规则_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

Apache .htaccess重写类似facebook的用户名规则

Apache .htaccess重写类似facebook的用户名规则,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我目前的申请使用以下代码 RewriteBase / #for profile display RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^user/([^/]+)/([^/]+)/([^/]+)/?$ /profile.php?username=$1&option=$2&source=$3 [QSA] RewriteRule ^user/([^/]+)

我目前的申请使用以下代码

RewriteBase /

#for profile display
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^user/([^/]+)/([^/]+)/([^/]+)/?$ /profile.php?username=$1&option=$2&source=$3 [QSA]
RewriteRule ^user/([^/]+)/([^/]+)/?$ /profile.php?username=$1&option=$2 [QSA]
RewriteRule ^user/([^/]+)/?$ /profile.php?username=$1 [QSA]

#for hiding.php extension
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]
它将把URL
www.domain.com/user/johndoe/photos/photoid-123
视为
www.domain.com/profile.php?username=johndoe&option=photos&source=photoid-123

现在,我想做的是从url中删除/user/part,并将其保持为
www.domain.com/johndoe/photos/photoid-123

我尝试过修改重写规则,如
RewriteRule^([^/]+)/…
RewriteRule^/([^/]+)/…
RewriteRule([^/]+)/…
,但它给了我500个错误

有什么建议吗?

这样说:

DirectoryIndex.html index.php 重新启动发动机 重写基/

#ignore files and directories from rewrites
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ profile.php?username=$1&option=$2&source=$3 [QSA,L]
RewriteRule ^([^/]+)/([^/]+)/?$ profile.php?username=$1&option=$2 [QSA,L]
RewriteRule ^([^/]+)/?$ profile.php?username=$1 [QSA,L]

#for hiding.php extension
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !\.php$ %{REQUEST_FILENAME}.php [QSA,L]

它正在工作,但它也将现有文件名视为GET value。如果您按原样使用这些规则(请检查我的第一条规则以忽略文件/目录),现有文件名将被忽略。哈哈。知道了。我刚刚移动了顶部的
#以隐藏.php扩展名
代码。但是,这在任何情况下都会导致任何问题吗?如果值为空,如何转到index.php?您可以使用
DirectoryIndex.html index.php
。请参阅更新的代码。