使用htaccess预先添加到URL

时间:2012-12-01 20:05:16

标签: php .htaccess url-rewriting

道歉,如果这个问题被问到或者我不确定标题是否正确,但我刚刚开始使用htaccess文件,我有点迷失了。基本上我想要做的是将“index.php”添加到URL。例如,如果用户输入:

http://www.example.com/show/12

我希望htaccess文件生成URL:

http://www.example.com/index.php/show/12

如果无法做到这一点,是否有办法始终转到index.php前端控制器并将“show / number ”添加到URL,以便前端控制器可以通过参数到另一个控制器?

我的htaccess代码如下:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php

我需要它假设所有URL请求都转到index.php前端控制器,然后将其余的URL传递给前端控制器。

我不断得到的错误是:

The requested URL /testing-mod-rewrite/show/12 was not found on this server.

如果它有帮助,这是我的前端控制器的PHP代码:

include_once('controllers/baseController.php');
$uri = $_SERVER['REQUEST_URI'];
$urifinal = str_replace($uri , '/', $uri);

$request = explode('/', $_SERVER['REQUEST_URI']);
$controller = new BaseController();
$controller->index_action($request);

4 个答案:

答案 0 :(得分:1)

编辑:实际上,我并不完全确定你想要什么。在你的问题中,你说你想将index.php添加到url中,如果它没有它。在您提问的评论中,您说您要将其从网址中删除。使用PHP,前者很可能会更容易。后者应通过以下方式完成:


您可以将信息传递给查询字符串。

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?view=$1 [L]

所以输入的网址可能是:example.com/view/test/foo,重写的(内部)网址是example.com/index.php?view=test/foo

现在在PHP中你应该可以做到:

$view = $_GET['view'];
$controller = new BaseController();
$controller->index_action(explode('/', $view));

请注意,您应该在某个时候验证$ view中包含的输入。

编辑:另外,我不明白这一行:

$urifinal = str_replace($uri , '/', $uri);

这似乎是一种过于复杂的说法:

$urifinal = '/';

除非我完全错过了什么。

答案 1 :(得分:0)

<强>更新:

以下是重定向输入网址的示例:

http://www.example.com/show/12到此网址:

http://www.example.com/index.php?show=12

RewriteEngine on
RewriteRule ^(show)/([0-9]+)/?$ http://www.example.com/index.php?$1=$2 [L]

我知道这不是问题的答案,但是为了让你的问题按原样运作,你需要创建一个名为index.php的子目录,我认为这是不可能的。< / p>

使用任何其他名称(例如new_dir)规则将如下所示,前提是目录存在:

RewriteEngine on
RewriteRule ^(show)/([0-9]+)/?$ http://www.example.com/new_dir/$1/$2 [L]

最后一行将重定向到:

http://www.example.com/new_dir/show/12

答案 2 :(得分:0)

访问此链接 http://www.askapache.com/htaccess/redirect-index-blog-root.html

或者如果你拥有一个wordpress网站,那就有点容易了。 您需要在外部\本地站点中安装任何这些插件,并按照链接中的说明进行操作。

1。)http://wordpress.org/extend/plugins/redirection/

2。)http://wordpress.org/extend/plugins/quick-pagepost-redirect-plugin/

3。)http://www.dailyblogtips.com/gocodes-url-redirection-plugin-for-wordpress/

4。)http://pathanruet.wordpress.com/2011/04/23/wordpress-plugin-url-redirection/

答案 3 :(得分:0)

好像我的htaccess代码很好,我需要做的就是禁用MultiViews。

<Directory /var/www/>
    Options Indexes MultiViews + FollowSymLinks
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>
相关问题