道歉,如果这个问题被问到或者我不确定标题是否正确,但我刚刚开始使用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);
答案 0 :(得分:1)
您可以将信息传递给查询字符串。
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>