【问题标题】:dynamic to static url AND removing the dynamic动态到静态网址并删除动态
【发布时间】:2013-08-16 07:01:28
【问题描述】:

我想将所有动态网址更改为静态网址, 但在重写动态 url 后仍然响应/可用。

我做了什么=>

我找到了这个 SEO 工具: http://www.webconfs.com/url-rewriting-tool.php

我输入了这个: .../filmdetails.html?var=ich_einfach_unverbesserlich_ii

然后我把这个放到我的 .htaccess 中:

RewriteEngine On
Options +FollowSymLinks
RewriteRule ^filmdetails/(.*)/$ filmdetails.html?var=$1

有效,但现在我遇到了一个问题:此 URL 仍然可用,不应该是:.../filmdetails.html?var=ich_einfach_unverbesserlich_ii

如何摆脱动态网址?

【问题讨论】:

    标签: .htaccess dynamic static rewrite


    【解决方案1】:

    您的规则只会将看起来更漂亮的 URL 重写为带有查询字符串的 URL。规则只能从“模式”->“目标”方式工作,映射不会神奇地以另一种方式工作。您必须创建一个单独的规则才能重定向浏览器:

    RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /filmdetails\.html\?var=([^&\ ]+)&?([^\ ]*)
    RewriteRule ^ /filmdetails/%2/?%3 [L,R=301]
    

    【讨论】:

    • 复制并粘贴您的解决方案,它可以工作,但还有更多问题。首先,你能解释一下代码吗?什么是get head,非常神秘,因此我讨厌htaccess。我需要理解它,因为我必须确定它的作用。其次,可以吗,内部链接就像“/filmdetails.html?var=ich_einfach_unverbesserlich_ii”
    • 好的问题没有。 3:为什么不产生循环?
    • @JürgenScheffler 它不会循环,因为条件会检查实际的 HTTP 请求。这是 HTTP 请求的第一行,类似于:GET /path/to/file?param=value HTTP/1.1。这与 URI 不同,因为 URI 被重写引擎更改,但 ${THE_REQUEST} var 只是实际请求。如果浏览器请求更好看的 URL,它将不匹配此规则。
    • 谢谢!所以我的代码是 URI 重写,而你的代码是请求重写。我对动态 URI 做了很好的 URI 你通过 headerrequest 对很好的 URI 做 dyn URI。简单地说。如果我仍然错了,请纠正我。否则就是这样,我很高兴你能帮上忙。
    • @JürgenScheffler 两者都是 URI 重写,只是上面的规则检查的是 Request 而不是 URI。这只是一种防止重写循环的方法,因为您只想在实际请求具有查询字符串而不是 URI 时进行重定向。
    【解决方案2】:

    试试:

    Options +FollowSymLinks
    RewriteEngine On
    #set this to path to your filmdetails.html file (from the document root)
    RewriteBase /
    #checking if redirect already happened
    RewriteCond %{ENV:REDIRECT_PASSED} !^$
    RewriteRule $ - [L]
    #Your rewrite rule
    RewriteRule ^filmdetails/(.*)/$ filmdetails.html?var=$1 [L,E=PASSED:1]
    #redirecting from filmdetails.html with query string ?var=something
    RewriteCond %{QUERY_STRING} ^var=(.+)$ [NC]
    RewriteRule ^filmdetails.html$ filmdetails/%1/? [R]
    

    filmdetails.html?var=something 将被重定向到filmdetails/something

    【讨论】:

    • 不要明白这一点,希望乔恩林的解决方案对我来说已经足够了。无论如何,谢谢我 ieee。
    猜你喜欢
    • 1970-01-01
    • 2013-07-25
    • 2013-11-29
    • 1970-01-01
    • 2021-08-08
    • 2013-06-24
    • 1970-01-01
    • 2016-08-27
    • 2021-09-21
    相关资源
    最近更新 更多