HTACCESS URL重写不起作用制作静态网址

时间:2017-03-22 14:43:55

标签: php apache .htaccess mod-rewrite

我有问题我正在使用htaccess添加index.php并转换网址。

index.php工作正常,但网址没有转换。

给定网址:http://example.com/allmodels/Samsung-mobiles_80

我想转换为http://example.com/allmodels?st=Samsung-mobiles_80

我使用了以下语法。

1:

        Options +FollowSymLinks -MultiViews
        RewriteEngine on
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule .* index.php/$1
        RewriteRule ^allmodels/(.*)$ allmodels?st=$1 [NC,L]

2:

        Options +FollowSymLinks -MultiViews
        RewriteEngine on
        RewriteRule ^allmodels/(.*)$ allmodels?st=$1 [NC]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule .* index.php/$1 [PT,L]

3:

        Options +FollowSymLinks -MultiViews
        RewriteEngine on
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^allmodels/(.*)$ allmodels?st=$1 [NC]
        RewriteRule .* index.php/$1 [PT,L]

我尝试了很多语法,但所有这些都不适用于我。

我找不到错误404页面。

2 个答案:

答案 0 :(得分:1)

我根据我收到的新信息再次更新了建议的解决方案:

Options +FollowSymLinks -MultiViews
RewriteEngine on
RewriteRule ^/allmodels/(.*)$ /allmodels?st=$1 [P,NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$1 [L]

RewriteRule。* index.php / $ 1必须排在第二位,否则/ allmodels-call将重新写入index.php / allmodels /(.*)。或者你必须像我一样添加第三行来排除/ allmodels调用。

R = 301且R =永久相同。使用你喜欢的任何东西。

最后确保目标文件确实存在;)

<强>更新

设置rewrite.log要求您在&#34;&#34;&#34;

之后立即添加以下行
RewriteLogLevel Debug

完成后,重新启动apache并调用您的URL。然后查看/var/log/apache2/rewrite.log,您将看到重写模块如何处理您的请求。要么发布结果,要么以这样的方式描述结果,这将使其他人能够进一步支持你。谢谢:))

<强> UPDATE-2

经过一番来回,它明确表示建议的规则本身并不是问题所在。但是,要求最终解决方案的方式并非最佳^^

所以我现在改变了我的解决方案,以适应批准的正确和正常工作版本,以及&#39; P&#39;代理而不是&#39; R&#39;用于重写以隐藏用户写入的orignal-URL。

答案 1 :(得分:0)

最后,我得到了我的解决方案,我使用了以下适用于我的代码。

Options +FollowSymLinks -MultiViews
RewriteEngine on
RewriteRule ^allmodels/(.*)$ /allmodels?st=$1 [P,NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$1 [L]

感谢腥。