只是好奇是否有人可以帮助我解决这个HTACCESS问题。
我有这些需要正确转发的旧网址。
以前的结构
domain.com/Canada/Accounting
domain.com/Canada/Trades
domain.com/Canada/Sales
正确的结构
CATEGORY - / jobs / accounting-jobs
位置 - / jobs / jobs-kelowna
TOGETHER - / jobs / accounting-jobs-kelowna
域名结构
domain.com/jobs/ [类别] -jobs- [位置]
这是可能的,无论是通过HTACCES还是PHP ...只是不想要这些404的页面。 我有86+要做,如果有一个很好的方法来转发这些。 这就是我所拥有的,但我无法成功地正确转发坏网址。
OLD
/browse
/Toronto/
/Canada/Administrative
/Vancouver/
/Canada/Trades
/Calgary/
/Canada/Hospitality
这是我现在的HTACCESS。
Options +FollowSymlinks
RewriteEngine on
RewriteBase /
#
# Trailing slash check
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule ^(.*)$ $1/ [L,R=301]
#
# PAGES
RewriteRule ^add-job/?$ /add-job.php [L]
RewriteRule ^jobs/?$ /results.php [L]
RewriteRule ^sitemap/?$ /sitemap.php [L]
#
# SEARCH
# CATEGORY - accounting-jobs
# LOCATION - jobs-kelowna
# TOGETHER - accounting-jobs-kelowna
RewriteRule ^jobs/([a-zA-Z0-9_-]+)/([0-9]+)?$ results.php?whatwhere=$1&page=$2
RewriteRule ^jobs/([a-zA-Z0-9_-]+)/([0-9]+)/?$ results.php?whatwhere=$1&page=$2
答案 0 :(得分:1)
如果您有mod_rewrite
,则可以将这些行添加到.htaccess
文件中:
RewriteEngine on
RewriteRule ^Canada/Accounting$ /jobs/accounting-jobs [R,L]
但是,您的问题并不清楚您想要映射的内容。以前的3个URL是否应该重定向到3个新的URL?它们似乎不相同。
答案 1 :(得分:1)
要301重定向您的网页,您可以执行以下操作:
RewriteEngine On
RewriteBase /
RewriteRule ^(\w+)/(\w+)$ /jobs/$2-jobs-$1 [R=301,L]
这只会解决您之前结构中的网址(这些组合,您之前没有显示任何位置或类别的网址),但请注意Canada
将保留Canada
,但不会{ {1}}。您也可以使用重写将所有内容更改为小写。
您还必须注意不要重写任何当前网址,但如果没有更多信息,则应该这样做。
修改:对于仅限位置的网址,您可以使用以下规则:
canada
同样,您需要注意您的重写规则不会干扰您当前的网址。如果是这种情况,您需要手动重定向每个旧网址。
对于小写的新网址,您应该搜索SO,有一些问题可以很好地解答将mized-case变量转换为小写的问题。