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]
它将把URLwww.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
。请参阅更新的代码。