我需要一个没有参数的干净网址

时间:2014-11-05 14:24:10

标签: php apache .htaccess

你好,我需要让我的网址干净,我只是不知道是否开始,因为它令人难以置信,我已经阅读了很多关于干净网址的事情,但我不知道。

这就是我正在进行的woorank,因为我在做我的搜索引擎优化。

警告!我们在大量网址中检测到参数。

我不确定这是否正确我已将我的真实域名移出并改为放置我的网站

#RewriteCond %{HTTP_REFERER} !^$
#RewriteCond %{HTTP_REFERER} !^//(\.)?My site/.*$[NC]
#RewriteRule .(png|gif|jpg)$ – [F]

RewriteCond %{HTTP_HOST} !^ My site.co.uk$  [NC] 
RewriteRule (.*)  My site.co.uk/$1 [L,R=301]

谢谢J C

2 个答案:

答案 0 :(得分:0)

基本的htaccess可能如下所示:

RewriteEngine on
RewriteBase /

RewriteCond %{http_host} ^mysite.co.uk [nc]
RewriteRule ^(.*)$ http://www.mysite.co.uk/$1 [r=301,nc]

RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/?$ index.php?p1=$1&p2=$2&p3=$3 [L] 
RewriteRule ^([^/\.]+)/([^/\.]+)/?$ index.php?p1=$1&p2=$2 [L] 
RewriteRule ^([^/\.]+)/?$ index.php?p1=$1 [L]

对于每个新参数,您只需添加([^ /。] +)/和最后一个参数..

代码中发生的事情取决于您,但如果您想使用类似的东西,则需要一种标准的工作方式......

注意:你现在不能实现这个,因为你的网站需要完全构建你的htaccess的结构..所以如果你现在要替换它,很多其他事情可能会很快就会破产......

答案 1 :(得分:0)

这取决于。正如火影忍者指出的那样。我们需要知道代码的结构。举一些例子说明网址现在是什么以及你希望它们看起来像什么。这些例子将解释你如何对网站进行编程。

e.g。每个页面/about.php,/ register.php或单个条目/index.php的不同php文件,每个页面都有相同的参数键。

  • /index.php?page=page1&foo=bar&qux=norf
  • /index.php?page=page2&foo=bar

或者每个页面都有不同的参数名称

  • /index.php?page=page1&foo=bar
  • /index.php?page=page2&qux=norf

您可以随时执行的操作是重定向到单个index.php

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ http://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

index.php现在需要批准路由所有内容。这基本上与火影忍者建议的相同,但直接在PHP中,这对你来说可能更容易。 这种路由的发生方式取决于您的代码,取决于您。但是,让我们假设您为每个具有不同参数的页面提供了不同的文件。您可以在不更改其余代码的情况下执行此操作。

// FROM: /shop.php?category=software&subcategory=webdevelopment
// TO:   /shop/software/webdevelopment
$path = explode('/',$_SERVER['REQUEST_URI']);
if($path[0] == 'shop') { 
   $_GET['category'] == $path[1];
   $_GET['subcategory'] == $path[2]; 
   include('shop.php'); 
}

这样只需编辑一个文件,其余代码仍然可以使用$ _GET。这与您在htaccess中的操作相同。