0

只是好奇是否有人可以帮助我解决这个 HTACCESS 问题。

我有这些需要正确转发的旧 URL。

以前的结构

domain.com/Canada/Accounting

domain.com/Canada/Trades

domain.com/Canada/Sales

适当的结构

类别 - /jobs/accounting-jobs

位置 - /jobs/jobs-kelowna

一起 - /jobs/accounting-jobs-kelowna

域结构

domain.com/jobs/ [类别] -jobs- [位置]

这是可能的,无论是通过 HTACCES 还是 PHP ......只是不想要这些 404'ed 页面。如果有转发这些的好方法,我有 86+ 要做。这就是我所拥有的,但我无法正确成功地转发错误的网址。

老的

/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
4

2 回答 2

1

如果你有mod_rewrite,你可以将这些行添加到你的.htaccess文件中:

RewriteEngine on
RewriteRule ^Canada/Accounting$ /jobs/accounting-jobs [R,L]

但是,您的问题尚不清楚您想要映射什么。前 3 个 URL 是否应该重定向到 3 个新 URL?他们似乎并不等同。

于 2012-12-08T01:23:31.130 回答
1

要 301 重定向您的页面,您可以执行以下操作:

RewriteEngine On
RewriteBase /

RewriteRule ^(\w+)/(\w+)$ /jobs/$2-jobs-$1 [R=301,L]

这仅解决您之前结构中的 url(组合,您没有显示任何仅包含位置或类别的先前 url),但请注意,它Canada会保留Canada,它不会变成canada. 您也可以使用 rewrite 将所有内容更改为小写。

您还必须注意不要重写任何当前 url,但如果没有更多信息,应该这样做。

编辑:对于仅限位置的网址,您可以使用如下规则:

RewriteRule ^(\w+)/$ /jobs/jobs-$1 [R=301,L]

同样,您需要注意您的重写规则不会干扰您当前的网址。如果是这种情况,您将需要手动重定向每个旧网址。

对于小写的新网址,您应该搜索 SO,有一些关于将 mized-case 变量转换为小写的问题有很好的答案。

于 2012-12-08T01:28:04.587 回答