2013-08-16 59 views
1

我想要更改动态网址的静态, 但重写动态网址仍然响应/可用。动态到静态网址并删除动态

我做了什么=>

,我发现这个工具对于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 

工程,但现在我得到了一个专业blem:这个网址仍然可用,不应该是:.../filmdetails.html?var = ich_einfach_unverbesserlich_ii

如何摆脱动态网址?

回答

0

你的规则只重写更好看的URL到一个与查询字符串。规则只从“模式” - >“目标”方式工作,映射不会神奇地以另一种方式工作。你必须创建一个单独的规则,以重定向浏览器:

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

复制并粘贴您的解决方案,它的工作原理,但有进一步的问题。 首先,你能解释一下代码吗?最好的东西,非常神秘的所有,我讨厌htaccess因为这个。我需要了解它,因为我必须确定它的功能。 其次,是否可以,内部链接是“/filmdetails.html?var=ich_einfach_unverbesserlich_ii” –

+0

好的问题没有。 3:为什么它不产生LOOP? –

+0

@JürgenScheffler它不循环,因为条件检查*实际的HTTP请求*。这是HTTP请求的第一行,其格式如下:'GET/path/to/file?param = value HTTP/1.1'。这与URI被重写引擎改变的URI不同,但是'$ {THE_REQUEST}'var只是实际的请求。如果浏览器请求更好看的URL,它将不符合此规则。 –

0

尝试:

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

+0

不要得到这个,希望Jon Lin的解决方案对我来说已经足够了。无论如何,谢谢Im ieee。 –