RewriteRule不起作用

时间:2017-03-09 15:24:21

标签: apache .htaccess mod-rewrite

我想匹配这样的网址:

http://www.example.com/line/s3360

http://www.example.com/template.php?product=s3360

我这样做RewriteRule就像这样:

RewriteRule ^line/(.+)/?$ line/template.php?product=$1 [NC,L,QSA]

但我不想重定向网址:

http://www.example.com/line/

相反,我想将此网址链接到

http://www.example.com/line/index.php

完整的htaccess文件:

ErrorDocument 400 /erreur.php?erreur=400
ErrorDocument 401 /erreur.php?erreur=401
ErrorDocument 402 /erreur.php?erreur=402
ErrorDocument 403 /erreur.php?erreur=403
ErrorDocument 404 /erreur.php?erreur=404
ErrorDocument 405 /erreur.php?erreur=405
ErrorDocument 500 /erreur.php?erreur=500
ErrorDocument 501 /erreur.php?erreur=501
ErrorDocument 502 /erreur.php?erreur=502
ErrorDocument 503 /erreur.php?erreur=503
ErrorDocument 504 /erreur.php?erreur=504
ErrorDocument 505 /erreur.php?erreur=505

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

#avoid problem with form
RewriteCond %{REQUEST_METHOD} POST
RewriteRule ^ - [L]

# remove index
RewriteRule (.*)index$ $1 [R=301]

## don't touch /forum URIs
RewriteRule ^forums/ - [L,NC]

# To externally redirect /dir/foo.php to /dir/foo

RewriteCond %{THE_REQUEST} line/.+
#RewriteCond %{THE_REQUEST} !line/ind
RewriteRule ^line/(.+)/?$ line/template.php?product=$1 [NC,L,QSA]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L]

# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]

<Files 403.shtml>
order allow,deny
allow from all
</Files>

1 个答案:

答案 0 :(得分:1)

尝试这样

RewriteRule ^line\/([a-z][0-9]{4,})\/?$ template.php?product=$1 [NC,L,QSA]

我不得不猜测,在/ line / XXXXX之后可能会发生什么。