2017-02-12 84 views
1

我有一个名为URL www.example.com/print?id=adder
我希望它看起来像www.example.com/print/adder.htaccess中的脏网址没有转化成干净的URL

我使用下面的代码.htacces

RewriteEngine on 

# redirect all requests except only POST 
RewriteCond %{REQUEST_METHOD} !POST 
RewriteCond %{THE_REQUEST} \s/+(.*?/)?(?:index)?(.*?)\.(?:php?)[\s?/] [NC] 
RewriteRule^/%1%2 [R=302,L,NE] 

RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 

RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.+?)/?$ $1.php [L] 

RewriteRule ^print/([a-z]+) print.php?id=$1 [NC,L] 

但仍然,我有像www.example.com/print?id=adder这样的网址。我正在使用wamp 3.0.6(Latest Version),PHP 7.0,10 & Apache 2.4.23。为什么我面临这个问题。为什么不是代码工作?

+0

是/打印文件夹htaccess的? – starkeen

+0

不,我的.htaccess位于根文件夹中,并且print不是它的'print.php'文件夹。我已将.php扩展名隐藏起来,因此您可以看到'print?id ='而不是'print.php?id =' –

+0

“但是,我的网址类似于...” - 您还需要更改你的应用程序中的URL(这实际上是_changes_的URL) - 大概你已经这样做了? – MrWhite

回答

1

为了您的网址重定向到清洁的版本,把这个你最后的RewriteRule上述

RewriteCond %{THE_REQUEST} /print/?(?:\.php)?\?id=([^\s&]+) 
RewriteRule^/print/%1? [L,R] 
+0

您的代码更改了URL,但是由于该代码,它给出了内部服务器错误500. –

+0

您的修改代码未接受@starkeen。它转换成干净的URL,但它显示相同的500错误,内部配置错误 –

+0

Akshay,我不认为你得到这个规则的错误。规则是好的我已经在我的服务器上测试过它。请检查您的错误日志以获取关于500error的信息。 – starkeen