我需要一个重写规则来加载一个有时需要一个和两个变量的网站。
我需要通过以下方式访问我的网站:
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
而不是其他两个。
答案 0 :(得分:1)
真的应该301将带有斜杠的网址重定向到没有斜杠的相同网址(在单独的重写中)。如果它们都提供相同的内容,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]
答案 1 :(得分: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]