2

我需要一个重写规则来加载一个有时需要一个和一些两个变量的站点。

我需要通过以下方式访问我的网站:

blubb.com/user123
blubb.com/user123/

应该改写为/profile.php?username=user123

blubb.com/user123/photos
blubb.com/user123/photos/

应该改写为/profile.php?username=user123&site=photos

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)$ /profile.php?username=$1&site=$2 [NC]

有了上面的规则,我就可以打电话了blubb.com/user123/blubb.com/user123/photos但不能打电话给其他两个。

4

2 回答 2

1

Tou 真的应该 301 将带有斜杠的 URL 重定向到没有斜杠的相同 URL(在单独的重写中)。如果两者都提供相同的内容,Google 会将其视为内容稀释并因此对您进行处罚。

这应该这样做:

# Redirect trailing slash to no trailing slash for Google:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,QSA,R=301]

# Route appropriately
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?(.*)$ /profile.php?username=$1&site=$2 [NC,QSA]
于 2012-12-07T19:33:25.367 回答
0
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9A-Za-z]+)(/([0-9A-Za-z]*)/?$ /profile.php?username=$1&site=$3 [NC]
于 2012-12-07T19:34:45.710 回答