我有问题我正在使用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页面。
答案 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]
感谢腥。