我该如何重写网址?

时间:2011-03-02 08:42:34

标签: .htaccess mod-rewrite

有人可以告诉我如何重写此网址。我已经查看了很多关于stackoverflow的问题,但他们似乎错过了我的答案。

RewriteEngine On

这就是我所拥有的...它有点差。

如果他们没有指向目录,我需要重写url。

我需要这样做......

  

any.domain.com/pages/some-page-slug/login

要重写为正确的网址

  

any.domain.com/pages/login.php?page=32

有没有人对如何实现这一点有任何想法?

3 个答案:

答案 0 :(得分:0)

1)将product.php?id = 12重写为product-12.html

这是一个简单的重定向,其中.php扩展名在浏览器的地址栏中隐藏,动态URL(包含“?”字符)被转换为静态URL。

RewriteEngine on
RewriteRule ^product-([0-9]+)\.html$ product.php?id=$1

2)将product.php?id = 12重写为product / ipod-nano / 12.html

SEO专家总是建议在URL中显示主要关键字。在以下URL重写技术中,您可以在URL中显示产品的名称。

RewriteEngine on
RewriteRule ^product/([a-zA-Z0-9_-]+)/([0-9]+)\.html$ product.php?id=$2

3)将非www URL重定向到www URL

如果您在浏览器中输入yahoo.com,它将被重定向到www.yahoo.com。如果您想对您的网站执行相同操作,请将以下代码放入.htaccess文件中。这种重定向有什么好处?请查看关于SEO友好重定向(301)重定向的帖子和.htaccess。

RewriteEngine On
RewriteCond %{HTTP_HOST} ^optimaxwebsolutions\.com$
RewriteRule (.*) http://www.optimaxwebsolutions.com/$1 [R=301,L]

4)将yoursite.com/user.php?username=xyz重写为yoursite.com/xyz

您是否检查过zorpia.com。如果您在浏览器中输入http://zorpia.com/roshanbh233,则可以在那里看到我的个人资料。如果您想进行相同类型的重定向,即http://yoursite.com/xyzhttp://yoursite.com/user.php?username=xyz,那么您可以将以下代码添加到.htaccess文件中。

RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ user.php?username=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ user.php?username=$1

5)将域重定向到public_html内的新子文件夹。

假设您已经重新开发了您的站点,并且所有新开发都驻留在内部根文件夹的“new”文件夹中。然后可以像“test.com/new”那样访问网站的新开发。现在将这些文件移动到根文件夹可能是一个繁忙的过程,因此您可以在.htaccess文件中创建以下代码并将其放在网站的根文件夹下。结果,www.test.com指出“新”文件夹中的文件。

RewriteEngine On
RewriteCond %{HTTP_HOST} ^test\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.test\.com$
RewriteCond %{REQUEST_URI} !^/new/
RewriteRule (.*) /new/$1 

答案 1 :(得分:0)

要做到这一点,你需要编写一个前端控制器。

请参阅herehereherehere

或者在Apache中你可以重写这个

  

any.domain.com/pages/32/login

或者这个:

  

any.domain.com/32/login

甚至是这样:

  

any.domain.com/some-slug/32/login

到此:

  

any.domain.com/pages/login.php?page=32

只使用apache这样或那样做,你需要以某种方式提供页面ID。请记住,即使使用格式any.domain.com/some-slug/32/login,slug的内容也无关紧要,也不一定会链接到正确的页面。我认为这对于SEO来说是不受欢迎的。

另一个替代方案正在使用RewriteMap。但是,每当创建/编辑页面/ slug时,这将是棘手的并且需要reload apache配置。

答案 2 :(得分:0)

我了解pageslogin在这种情况下是静态的,some-page-slug正在发生变化。您始终希望重定向到静态页面/pages/login.php?page=32

所以这是怎么做的:

1)重写

RewriteEngine On
RewriteRule ^pages/([a-zA-Z0-9_]+)/login(.*)$ /pages/login.php?page=32

或2)重定向广告

RewriteEngine On
RewriteRule ^pages/([a-zA-Z0-9_]+)/login(.*)$ /pages/login.php?page=32 [R=301,L]

或3)重定向临时

RewriteEngine On
RewriteRule ^pages/([a-zA-Z0-9_]+)/login(.*)$ /pages/login.php?page=32 [R=302,L]

这是关于htaccess trics的精彩文章 http://perishablepress.com/press/2006/01/10/stupid-htaccess-tricks/