Database mod_rewrite对我不起作用

Database mod_rewrite对我不起作用,database,apache,mod-rewrite,apache2,Database,Apache,Mod Rewrite,Apache2,我正在尝试使用apache为网站设置mod_rewrite 这是我的一句话: RewriteEngine on RewriteRule ^news/Actualites/([^/]+)/?$ news/Actualites_d.tpl?SKU=$1 [L] 但它不起作用 我还有其他的重写工作,我测试了一些简单的东西,比如: RewriteEngine on RewriteRule ^ancienne-url\.html$ /nouvelle-url.html [R=301,L] 这是有效的

我正在尝试使用apache为网站设置mod_rewrite

这是我的一句话:

RewriteEngine on
RewriteRule ^news/Actualites/([^/]+)/?$ news/Actualites_d.tpl?SKU=$1 [L]
但它不起作用

我还有其他的重写工作,我测试了一些简单的东西,比如:

RewriteEngine on
RewriteRule ^ancienne-url\.html$ /nouvelle-url.html [R=301,L]
这是有效的

我试着把它放在Htaccess和Vhost中,两者都不起作用

我还想得到以下信息

当我有像news/implementes\u d.tpl这样的url时,news/implementes/MYPRODUCT?SKU=MYNUMERIC\u ID

我不知道是否有可能在一边有文字,当它是正常的时候,我是一边的数字ID… 提前谢谢 劳伦斯

试试:

RewriteEngine on
RewriteBase /
RewriteRule ^news/Actualites/([^/]+)/?$ news/Actualites_d.tpl?SKU=$1 [NC,QSA,L]
关于问题的第一部分

对于第二部分,您可以使用重写规则来实现它,但这意味着对所有URL进行硬编码,这不是一个好主意

RewriteRule ^news/Actualites/MYPRODUCT$ news/Actualites_d.tpl?SKU=MYNUMERIC_ID [NC,QSA,L]
然后,您需要复制上面的行,为每个不同的URL替换MYPRODUCT和MYPRODUCT_ID

在这种情况下,您通常会遵循如下规则:

RewriteRule ^news/Actualites/([^/]+)$ news/Actualites_d.tpl?SKU=$1 [NC,QSA,L]
而implementes_d.tpl脚本将查询数据库或任何东西,以获取传入URL值所需的信息:

SELECT * FROM tbdProduct WHERE fldProductURLSlug = SKU

因此,您的重写规则有几个问题,一般来说,最好添加完整的URL以防止循环本地重写。第二个问题是您的重写规则要求URL以新闻开头。。。但事实上,它是/新闻,所以要修复兼容性,它应该看起来或多或少像:

RewriteRule ^/?news/Actualites/(.*)/.*$ http://{$HTTP_HOST}/news/Actualites_d.tpl?SKU=$1 [R=301,L]
RewriteRule ^/?news/Actualites/(.*)/(.*)/(.*)/.*$ http://{$HTTP_HOST}/news/Actualites_d.tpl?SKU=$1&orderid=$2&somvar=$3 [R=301,L]
在本例中,您将看到我添加了/和?在重写规则的开头,这是为了在未设置/的情况下保持兼容性。其次,您将看到。*圆括号表示变量赋值,您可以设置其中的多个,然后将它们与$1$2一起使用,以此类推。最后,我将重定向位置设置为301重定向。除非您在别名目录下服务,例如/blog/

上一个示例将RewriteBase设置为/,然后执行^news的重写规则。但这并没有考虑到您可能收到的一些不包括起始斜杠的请求

为了完整性起见,另一个例子如下:

RewriteRule ^/?news/Actualites/(.*)/.*$ http://{$HTTP_HOST}/news/Actualites_d.tpl?SKU=$1 [R=301,L]
RewriteRule ^/?news/Actualites/(.*)/(.*)/(.*)/.*$ http://{$HTTP_HOST}/news/Actualites_d.tpl?SKU=$1&orderid=$2&somvar=$3 [R=301,L]

你在申报你的基地吗?如果你是在VPS上,你经常需要这个来让东西工作。我不是在VPS上,但我不知道RewriteBase…我应该设置什么?你的服务器是否配置为允许重写?不幸的是不是…我添加了RewriteBase/Lawrence,我不擅长mod_rewrite来回答这个问题,但是当我被困在一些代码上时,我喜欢和你们一样的口味,一开始尽量用简单的香草,当我开始做的时候,然后从那里开始。。。一个接一个地添加我实际需要的细节,以发现问题所在。您确实尝试过简单的重写规则^ancenne url\.html$/nouvelle-url.html[R=301,L],所以现在,您可以尝试一下介于这两者之间的一些方法,即:重写规则^news/implements/test$news/implements_d.tpl?SKU=$1[L]。如果失败了,就进一步细分。