我不是正则表达式专家,我正试图在网站上实现一个社交登录系统,该系统可能会也可能不会将用户重定向到登录之前的页面。
像这样,没有重定向:
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是否是标记结束的分隔符并将其取消使得规则接受([^ /] +)位之后的每一项。< / p>另外:([^ /] +)位是否与正斜杠相匹配?
答案 0 :(得分:1)
当用户在
这样的网页上时,我遇到了问题
这是一个非常含糊的句子。你实际上并没有说出问题所在。你的规则怎么办?也没有粘贴你的整个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
匹配,而不是/
。