我正在我的网站上工作,我创建了一些新的网页,解释了我的网站的更多细节。现在出于搜索引擎优化的目的,我知道谷歌更喜欢包含关键词的链接。所以我写的页面可以叫做新鞋。现在我已经得到的页面工作为website.com/newshoes,但由于谷歌可能认为这是一个词,我正在努力使其显示website.com/new-shoes而不是使用htaccess,但我不能让它工作。这就是我想出来的,但是它不起作用。
RewriteRule ^([^/]*)-([^/]*)$ /index.php?$1$2 [QSA,L]
有谁能帮我一下吗?谢谢!
[编辑]RewriteEngine On
RewriteCond %{HTTP_HOST} ^reflap.com [NC]
RewriteRule (.*) http://www.reflap.com/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)$ /index.php?$1 [QSA,L]
RewriteRule ^([^/]*)/$ /index.php?$1 [QSA,L]
RewriteRule ^([^/]*)/([^/]*)$ /index.php?$1&$2 [QSA,L]
RewriteRule ^([^/]*)/([^/]*)/$ /index.php?$1&$2 [QSA,L]
RewriteRule ^/facebook-chat/ http://chat.facebook.com/ [P]
ErrorDocument 404 /error.php
RewriteEngine On
RewriteRule ^([^/]*)-([^/]*)$ /index.php?$1$2
RewriteCond %{HTTP_HOST} ^reflap.com [NC]
RewriteRule (.*) http://www.reflap.com/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/?$ /index.php?$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)/?$ /index.php?$1&$2 [QSA,L]
RewriteRule ^/facebook-chat/ http://chat.facebook.com/ [P]
ErrorDocument 404 /error.php
您需要在泛型之上的重写规则中放置具体内容-您所拥有的顺序意味着您将被重定向到index.php?New-page,因为你要先匹配一个更通用的模式
试试这个:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^reflap.com [NC]
RewriteRule (.*) http://www.reflap.com/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)-([^/]*)$ /index.php?$1$2 [QSA,L]
RewriteRule ^([^/]*)/([^/]*)$ /index.php?$1&$2 [QSA,L]
RewriteRule ^([^/]*)/([^/]*)/$ /index.php?$1&$2 [QSA,L]
RewriteRule ^/facebook-chat/ http://chat.facebook.com/ [P]
RewriteRule ^([^/]*)$ /index.php?$1 [QSA,L]
RewriteRule ^([^/]*)/$ /index.php?$1 [QSA,L]
ErrorDocument 404 /error.php
这应该可以解决你的问题-但是在这个。htaccess中有一个更普遍的问题- RewriteCond
指令只适用于紧跟其后的RewriteRule
。它们不会继续遵循任何其他规则。这意味着无论文件或目录是否真的存在,第一个规则之后的所有规则都将应用。
http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html rewritecond