我不是正则表达式专家,我正试图在网站上实现一个社会登录系统,可能会或可能不会将用户重定向到他在登录前的页面。
像这样,对于没有重定向:
RewriteRule ^login/([^/]+)$ login.php?p=$1 [L]
http://example.com/login/Facebook>>页面做它的东西,并去索引(默认行为)。
或像这样用于重定向(p = provider;R =重定向相对路径):
RewriteRule ^login/([^/]+)/([^/]+)$ login.php?p=$1&r=$2 [L]
如果用户在像http://example.com/info这样由以下规则生成的页面上,则
非常有效:
RewriteRule ^info$ users_infosystem.php [L]
当用户访问类似http://example.com/gallery/galleryname
的页面时,我遇到了问题RewriteRule ^gallery/([^/]+)$ galery.php?name=$1 [L]
帮忙吗?
编辑:刚刚发生在我…我不知道$ char是否是标记结束的分隔符,并将其删除使规则接受([^/]+)位之后的所有内容。
还有:([^/]+)位不匹配除正斜杠以外的所有内容吗?
那是一个非常模糊的句子。你没有说问题出在哪里。如果你的规则不起作用呢?也没有粘贴你的整个htaccess文件,你只粘贴了一小部分,所以我们甚至不知道你的规则是什么顺序的,或者是否有其他规则。当用户访问像
这样的页面时,我遇到了问题
我不认为这些规则有什么问题。这些规则应该会起作用。它们都有不同的匹配。您还可以使用?
后面的/
使其成为可选的。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^login/([^/]+)/([^/]+)/?$ login.php?p=$1&r=$2 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^login/([^/]+)/?$ login.php?p=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^info/?$ users_infosystem.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^gallery/([^/]+)/?$ galery.php?name=$1 [L]
最后一个规则将匹配http://example.com/gallery/galleryname
,在末尾有或没有/
。