Mod_rewrite问题(多个斜杠地址?)


mod_rewrite issue (multiple slashes address?)

我不是正则表达式专家,我正试图在网站上实现一个社会登录系统,可能会或可能不会将用户重定向到他在登录前的页面。

像这样,对于没有重定向:

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,在末尾有或没有/