0

这不是 mod_rewrite 的真正问题,而是我的问题。我很确定我的错误非常愚蠢,但我无法解决它。我在 Mac OS X Lion 上设置了一个非常简单的 XAMPP 安装,其中包含一个什么都不做的简单 index.php 脚本。我只是想学习如何在 php 中使用友好的 url,所以,如果我收到了这种格式的 url

http://localhost/project/controller_name/action_name/id

所以,如果我收到这个

http://localhost/project/user/delete/7

可以在内部使用这样的东西

http://localhost/project/index.php?controller=user&action=delete&id=7

我用这个内容在项目文件夹上创建了一个 .httacess

RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ /aletta/index.php?controller=$1&action=$2&id=$3 [L]

我检查了是否启用了 mode_rewrite 并且确实启用了。但不起作用。我键入 http://localhost/project/user/delete/7并且页面显示“找不到对象!”

任何帮助将不胜感激

4

2 回答 2

0

If you want to remap /project/$alphanum1/$alphanum2/$numeric into /project/index.php?controller=$alphanum1&action=$alphanum2&id=$numeric, then you could give this configuration directives a try:

Options +FollowSymlinks
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^project/([a-z0-9-_]+)/([a-z0-9-_]+)/([0-9]+)/?$ /project/index.php?controller=$1&action=$2&id=$3 [NC]
于 2013-04-10T04:42:04.707 回答
0

试试这个,.htaccess文件放在根目录:

Options +FollowSymLinks -MultiViews

<IfModule mod_rewrite.c>

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f

    # set project dir to RewriteBase
    RewriteBase /aletta/
    RewriteRule ^([0-9a-zA-Z\-]+?)/([0-9a-zA-Z\-]+?)?/([0-9a-zA-Z\-]+?)?$ index.php?controller=$1&action=$2&id=$3

</IfModule>

并运行http://localhost/user/delete/7,在index.php集合中var_dump($_GET);,结果将是:

array (size=3)
  'controller' => string 'user' (length=4)
  'action' => string 'delete' (length=6)
  'id' => string '7' (length=1)
于 2013-04-10T01:39:11.333 回答