【发布时间】:2009-04-26 04:49:39
【问题描述】:
我正在尝试使用 mod_rewrite 将页面重定向到带有一些变量的页面(用于将它们与 PHP 的 $_GET 一起使用)。
用几行举个例子:
- 当用户输入
/c/stg时,它会重定向到item_show.php?id=$1&f=1(其中f是页码)。 - 当用户输入
/c/stg/2时,它会重定向到带有show.php?id=$1&f=$2的第二页。
我认为我的文件中没有错误或滥用这些内容,但是,这就是我想要的:
我希望用户直接输入/string 去item_show.php?id=$1&f=1 $1 当然是我们的字符串...
但是当我通过从RewriteRule 中删除/c/ 部分来更改我的文件时,它开始在所有其他目录中给出错误并且不读取任何文件(my.css),即使我已经定义了RewriteCond %{REQUEST_FILENAME} !-f ...
你有什么建议吗? 或者我怎样才能用任何方法使这个系统成为可能?
Options FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#user
RewriteRule ^u/([^/]+)/?$ profile.php?username=$1 [L,NC]
#marked
RewriteRule ^marked/([^/]+)/?$ item_marked.php?id=$1 [L,NC]
#content
RewriteRule ^c/([^/]+)/?$ item_show.php?id=$1&f=1 [L,NC]
RewriteRule ^c/([^/]+)/([^/]+)/?$ item_show.php?id=$1&f=$2 [L,NC]
【问题讨论】:
-
第一个建议:在里面贴出带有这些规则的文件内容。它是主服务器配置,还是 .htaccess 文件?
-
当前 .htaccess 文件在这里: Options FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d #user RewriteRule ^u/([^/]+)/? $ profile.php?username=$1 [L,NC] #marked RewriteRule ^marked/([^/]+)/?$ item_marked.php?id=$1 [L,NC] #content RewriteRule ^c/([^ /]+)/?$ item_show.php?id=$1&f=1 [L,NC] RewriteRule ^c/([^/]+)/([^/]+)/?$ item_show.php?id= $1&f=$2 [L,NC]
-
删除 c/ 意味着所有 URL 都将匹配您的模式……这就是您的意思,对:> RewriteRule ^([^/]+)/?$
-
是的,Nerdling 我的意思是,正如你所说,所有 URL 都匹配它,所以它不起作用..但我真的需要一个解决方案......
标签: php .htaccess mod-rewrite url-rewriting