2013-05-07 79 views
0

我想在我刚刚构建的网站上设置一个漂亮的固定链接系统,并且没有任何影响。我要么得到500错误,要么永久链接不起作用,并且/或者它打破了所有CSS和图像的链接,同时如果尝试使用永久链接结构仍然会给404。自定义网站上的mod_rewrite的固定链接生成

这里是我的.htaccess代码:

RewriteEngine On 
RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ /main/index.php?act=$1&sub=$2&id=$3 [L] 

我希望它转换链接像index.php?act=admin&sub=edit-product&id=5/admin/edit-product/5,同时包括任何在两者之间。例如,如果一个URL有一个ID呼叫但不是一个子呼叫,它仍然可以工作。

任何帮助将不胜感激。

UPDATE:

我已经加入RewriteBase /和它现在做的事情,但固定链接不能正常工作。

有没有一种方法可以找出重写的URL实际指向的位置?

看来,使用所有重写规则的完整URL可以正常工作,但不是只需要其中一部分的URL。

+0

看那里http://stackoverflow.com/questions/16423258/php-mvc-with-better-htaccess/16423418 – Eugene 2013-05-07 16:37:54

+0

好了,我的代码现在是'RewriteEngine叙述上 的RewriteCond%{} REQUEST_FILENAME!-f 的RewriteCond% {REQUEST_FILENAME}!-d RewriteRule ^([^ /] +)/([^ /] +)(/([^ /] +))$ main/index.php?act = $ 1&sub = $ 3&id = $ 4'。它不会破坏CSS /图像链接,但重定向不起作用。 – Adam 2013-05-07 16:45:50

+0

您可以尝试使用以下规则将所有重定向到index.php:RewriteRule ^。* $ index.php [NC,L]并在您的PHP应用程序中解析$ _SERVER ['REQUEST_URI'] – Eugene 2013-05-07 16:49:21

回答

1

我使用这个重写代码的.htaccess在我的项目:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

此代码通存在请求(静态文件和等)原样,但所有其他重定向到index.php。请求uri int PHP为

$_REQUEST['REQUEST_URI'] 

在PHP中,我们(或我们的框架)可以像我们一样解析它。