URL重写不能与变量一起工作


URL Rewriting dont work with variables

这是htaccess文件中的一个规则:

RewriteRule ^Serie-examens-([0-9]+)-([0-9]+)-([a-zA-Z]+)$ examens-list.php?idChapitre=$1&idTitre=$2 [L]

在href中我放了这个url:

href="<?php echo 'Serie-examens-'.$idChapitre.'-'.$idTitres[0].'-debuter');?>"

当我点击链接时,我有这个错误:

Not Found
The requested URL /SerieJava/Serie-examens-1-1-debuter was not found on this server.

我正在使用wamp,我测试重写url没有变量,它的工作

规则中的错误在哪里?

完整的。htaccess文件:

SetEnv REGISTER_GLOBALS 0
<Files .htaccess>
order allow,deny
deny from all
</Files>
Options -Indexes
RewriteEngine On
RewriteBase /SerieJava/
RewriteRule ^Le-premier-chapitre chapitre1.php [L]
RewriteRule ^Serie-examens-([0-9]+)-([0-9]+)-([a-zA-Z]+)$ examenss-list.php?idChapitre=$1&idTitre=$2 [L]

谢谢

你在链接php中有一个不应该在那里的结束符:

href="<?php echo 'Serie-examens-'.$idChapitre.'-'.$idTitres[0].'-debuter');?>"
                                                                         ^ here

这可能会导致php错误,使您的链接无效。

Edit:还请注意,您正在使用此重写:

RewriteRule ^Serie-examens-([0-9]+)-([0-9]+)-([a-zA-Z]+)$ examens-list.php?idChapitre=$1&idTitre=$2 [L]

^表示开始,所以如果你的路径是/SerieJava/Serie-examen....,它将不会被重写,因为它以/SerieJava/开头。

你应该发布整个.htaccess文件,看看是否这是问题,但它看起来是。

这应该是你的/SerieJava/.htaccess:

SetEnv REGISTER_GLOBALS 0
<Files .htaccess>
   order allow,deny
   deny from all
</Files>
Options -Indexes
RewriteEngine On
RewriteBase /SerieJava/
RewriteRule ^Le-premier-chapitre chapitre1.php [L,NC]
RewriteRule ^Serie-examens-([0-9]+)-([0-9]+) examens-list.php?idChapitre=$1&idTitre=$2 [L,QSA,NC]

尝试在您的重写规则中添加/:

RewriteEngine On
RewriteBase /SerieJava
RewriteRule ^/Serie-examens-([0-9]+)-([0-9]+)-([a-zA-Z]+)$ examens-list.php?idChapitre=$1&idTitre=$2 [L]

注意/^之后,Serie之前

你也可以试着从规则中删除胡萝卜:

RewriteEngine On
RewriteBase /SerieJava/
RewriteRule Serie-examens-([0-9]+)-([0-9]+)-([a-zA-Z]+)$ examens-list.php?idChapitre=$1&idTitre=$2 [L]