我正在重建一个房地产网站,我们已经完全重组了数据库处理属性的方式,我现在正在尝试将所有旧的属性URL重定向到新的属性URL。我遇到的问题是旧网址为单个属性使用了多个参数(包括section和property属性),而新网址仅使用slug作为属性名称。
示例:
OLD: https://www.example.com/listings.php?sect=1&view=92
NEW: https://www.example.com/listings/tombstone-ranch
我当前的.htaccess看起来如下所示,最后两行是将slugs转换成干净网址的重写...这一切都很好。
RewriteEngine On
RewriteBase /
# remove .php; use THE_REQUEST to prevent infinite loops
RewriteCond %{THE_REQUEST} ^GET\ (.*)\.php\ HTTP
RewriteRule (.*)\.php$ $1 [R=301]
# remove index
RewriteRule (.*)/index$ $1/ [R=301]
# remove slash if not directory
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /$
RewriteRule (.*)/ $1 [R=301]
# add .php to access file, but don't redirect
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php [L]
RewriteRule ^listings/([a-zA-Z0-9-/]+)$ /listings/index.php?s=$1 [L]
RewriteRule ^listings/([a-zA-Z0-9-/]+)/$ /listings/index.php?s=$1 [L]
我遇到的问题是以下两种情况似乎都不起作用:
Redirect 301 /listings.php?sect=1&view=92 /listings/tombstone-ranch
,这也不是:
RewriteRule ^listings.php?sect=3&view=33 /listings/tombstone-ranch
或我尝试过的任何其他变体。
有什么想法? .htaccess不是我强大的西装,不幸的是我需要让这些工作考虑到旧版本的网站,它的网址已经存在了将近8年,所以有大约75个属性的死链接的可能性。
答案 0 :(得分:1)
你能试试这个规则吗?目前无法测试。
RewriteCond %{QUERY_STRING} sect=1&view=92
RewriteRule ^listings\.php$ /listings/thombstone-ranch/? [L,R=301]
您添加的规则也不起作用,因为您必须添加反斜杠
错:
RewriteRule ^listings.php?sect=3&view=33 /listings/tombstone-ranch
右:
RewriteRule ^listings\.php?sect=3&view=33 /listings/tombstone-ranch
不要忘记,因为您的主要网址是一个查询,您应该使用我给您的第一个选项。如果这不起作用留下评论,我很乐意帮助你