2011-09-12 30 views
0

我有一个网址是http://www.urlbookmarking.com/bookmarks-details.php?bid=55 ,我希望它像 http://www.urlbookmarking.com/bookmark/55htaccess的RewriteEngine叙述

我在我的htaccess写道:

RewriteEngine on 
RewriteRule /bid/(.*) bookmarks-details.php?bid=$1 

但是,当我去到第一URL重写引擎不适用我的规则。有什么错误或冲突吗?写成

我的全htaccess文件如下

Options +FollowSymLinks 

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

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

RewriteEngine on 
RewriteRule /bid/(.*) bookmarks-details.php?bid=$1 

请帮助我。

+0

你没不添加重写的部分。或者你倒退了。 – b01

+0

书本ID是否有任何字母,还是始终为全部数字。数字的最大数量是多少? – b01

回答

2

线Options +FollowSymLinks是可选的,如果在httpd.conf中已经配置

Options +FollowSymLinks 

RewriteEngine on 

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

RewriteRule ^bookmark/([0-9]+)$ bookmarks-details.php?bid=$1 [NC, L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 
+0

谢谢。有用 –

0
  1. 你应该只使用一个RewriteEngine on
  2. RewriteRule /bid/(.*) bookmarks-details.php?bid=$1 - 把这个行后Options +FollowSymLinks
  3. 再试
0

你想你的网址是/bid/55/bookmark/55?因为你写它,就好像它会是/bid/55 ...

无论如何,你的.htaccess应该看起来更像是这样的:

Options +FollowSymLinks 

RewriteEngine on 

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

RewriteRule ^bid/(.*)$ bookmarks-details.php?bid=$1 [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

...没有多RewriteEngine on指令(这些不要”不会破坏任何东西,但是不必要),并且在重写规则中没有前导斜杠。另外,将新规则放在重写不存在的文件的规则之前,以便在您有机会使用它之前不会重写您的URL,并将[L]标志添加到规则中,以免它被进一步修改其他规则。另外,将行开始/结束标记(^/$)添加到规则。

如果您将规则放在httpd.conf中,那么您只能使用前导斜杠,而不要在.htaccess文件中使用它们。

如果您希望自己的网址是/bookmark/,只是bookmark取代bid

1

有几件事情:

  1. RewriteEngine On只需要调用一次,尽管这可能不会造成任何问题
  2. 我也有RewriteBase /RewriteEngine On行后
  3. 我重写规则是这样的: RewriteRule ^common/(.*)$ common.php?file=$1 [QSA,L],它告诉我,你的规则应该像这样look RewriteRule ^bookmark/(.*) bookmarks-details.php?bid=$1 [QSA,L]
0

这个笑uld将所有'/bookmarks-details.php\?bid=(id)'带有书签id(只有数字)的网址重定向到/ bookmark /(id)。

RewriteRule ^/bookmarks-details\.php\?bid=([0-9]+) /bookmark/$1 [R, NC, L] 

一旦你成功地改写了URL,然后需要写一个同伴规则来处理它,就像这样:

RewriteRule ^/bookmark/([0-9]+) /bookmarks-details\.php\?bid=$1 [NC, L] 

如果应该总是增加的“www”的规则之间去开始和捕捉所有的规则,我把它放在最后。总之,它可能看起来像这样:

Options +FollowSymLinks 
RewriteEngine on 

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

RewriteRule ^/bookmarks-details\.php\?bid=([0-9]+) /bookmark/$1 [R, NC, L] 
RewriteRule ^/bookmark/([0-9]+) /bookmarks-details\.php\?bid=$1 [NC, L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

该链接可以让事情更清晰:http://corz.org/serv/tricks/htaccess2.php

相关问题