张奇怪_jr7Kk 发表于 2017-6-6 14:29:56

.htaccess文件URL重写的问题

想要把http://waimao.ubuntu.com/index.php/web/home/product_detail?p_id=64这个URL重写为http://waimao.ubuntu.com/goods/64这个样子, 在.htaccess文件下添加了如下规则:
RewriteRule ^goods/(+)/?$ index.php/web/home/product_detail?p_id=$1

张奇怪_jr7Kk 发表于 2017-6-6 14:30:33

但是不成功, 请问是哪儿有问题呢???

张奇怪_jr7Kk 发表于 2017-6-6 14:31:13

服务器是ubuntu+apache2

张奇怪_jr7Kk 发表于 2017-6-6 14:37:28

.htaccess的全部内容如下

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|static|min|alipay|weixinpay|pingpp|upload|images|Batch_trans_notify-PH    P-UTF-8|robots\.txt)
RewriteRule ^(.*)$ index.php/$1
RewriteRule ^goods/(+)/?$ index.php/web/home/product_detail?p_id=$1
</IfModule>

Hex 发表于 2017-6-6 16:03:16

建议 url rewrite 的问题,首先看 url rewrite 的手册,然后可以打开 rewrite log 调试下。

Michael锐生 发表于 2017-6-6 16:21:11

你的路由规则写错了,RewriteRule ^(.*)$ index.php/$1 后面的表明当前规则是最后一条规则,停止分析以后规则的重写。
另外你的这个直接用框架里的routes就可以了,例如
$route['goods/(:num)'] = "web/home/product_detail?p_id=$1";

张奇怪_jr7Kk 发表于 2017-6-30 16:37:58

Michael锐生 发表于 2017-6-6 16:21
你的路由规则写错了,RewriteRule ^(.*)$ index.php/$1 后面的表明当前规则是最后一条规则,停止分析 ...

框架里这样写路由规则是不行的,报错404

Michael锐生 发表于 2017-7-5 10:28:50

张奇怪_jr7Kk 发表于 2017-6-30 16:37
框架里这样写路由规则是不行的,报错404

你看一下有没有跳转到你的方法里面去,或者你用原地址看是否正常
页: [1]
查看完整版本: .htaccess文件URL重写的问题