2012-04-08 55 views
0

我的问题可能已经被问到,但是我在stackoverflow上搜索的所有问题都让我困惑。我试图做到这一点,以便当我做“www.website.com/newest/2”时,它转到第2页,当我做“www.website.com/newest/2/3”时,它转到页面2和第3项。什么是好的是,网页的工作。如果我将“www.website.com/newest/2”放到第二页,但之后的任何内容(如“www.website.com/newest/2/3”)都不起作用。它不再继续到第三个项目。只有页面加载正确,但在页面编号无效后在页面上发布数字。当我执行“www.website.com/newest/2/3”时,我查看了浏览器的源代码,发现任何本应该显示的与GET请求有关的产品编号的代码甚至不在码。这意味着我的物品/ ID号码的GET请求被破坏。启用.htaccess后获取请求不起作用

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{HTTP_HOST} ^website\.com$ [NC] 
RewriteRule ^(.*)$ http://www.website.com/$1 [L,R=301] 
RewriteRule ^newest/(.+)*/?$ ./index.php?newest=$1 
RewriteRule ^newest/(.+)*/(.+)*/?$ ./index.php?newest=$1&id=$2 

回答

0

的问题是,因为它需要进行匹配您(.+)*将匹配尽可能多的字符。改为将它们改为(.+?)

+0

这最终给我一个500 - 内部服务器错误。有什么建议么? – Ramin 2012-04-08 00:33:31

+0

@Ramin:我想mod_rewrite不支持nongreedy匹配的正则表达式。试试'([^ /] +)'。 – Ryan 2012-04-08 00:36:48

+0

你是说我应该把([^ /] +)代替(。+)* – Ramin 2012-04-08 00:41:47