URL重写不适用于变量

时间:2014-07-08 18:46:23

标签: php .htaccess url-rewriting wamp

这是htaccess文件中的规则:

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

在href我已经把这个网址:

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,它可以正常工作

规则中的错误在哪里?

Full .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]

感谢

3 个答案:

答案 0 :(得分:0)

你有一个关闭)在链接php中不应该存在:

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

这可能导致php错误导致链接无效。

修改:还要注意您正在使用它来重写:

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

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

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

答案 1 :(得分:0)

这应该是您的/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]

答案 2 :(得分:0)

尝试在重写规则中添加/

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

请注意/之后^

之后的Serie

您也可以尝试从规则中删除carot:

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