2017-03-09 122 views
0

我想匹配的網址是這樣的:重寫規則不起作用

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/ 

相反,我想這個URL鏈接到

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> 
+0

嘗試添加:'RewriteRule^line/$ line/index.php'之前的具體一個 – kaldoran

+0

您在問題中發佈的規則將不會重寫請求URL'http:// www.example.com/line /'所以看起來你必須在你的問題中添加更多細節。目前尚不清楚。請在問題中內嵌完整的現有規則集。一些任意的外部網站的鏈接在這裏不是SO的替代品。 – arkascha

回答

1

嘗試像這樣

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

我不得不作出一個猜測,有什麼事情可能站在/ line/XXXXX之後。

+3

'/'不需要轉義,它不是htaccess中的分隔符。 – chris85