我有http://example.com
和PHP路由类,检查是否存在一些URL。
我想做一个新的路线,这是:
http://example.com/foo/bar/123
但是只要我打开它,Apache就会将我redirect到一个错误页面。 所以我使用.htaccess。 代码是:
重写引擎 RewriteCond%{REQUEST_FILENAME}!-f RewriteCond%{REQUEST_FILENAME}!-d RewriteRule ^(。*)/index.php [L]
它工作,只要我使用http://example.com/foo
,但一旦我添加一些其他参数,它redirect到一个错误。
我猜测重写代码是错误的。 这是错的吗?
如果是的话,你能build议我好吗?
如果不是,问题可能在哪里?
你可以用php来处理URI:
的.htaccess:
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^ index.php [L]
PHP:
if (isset($_SERVER['REQUEST_URI'])) { $params = explode("/", ltrim($_SERVER['REQUEST_URI'], "/")); print_r($params); }
example.com/just/these/params
输出:
Array ( [0] => just [1] => these [2] => params )
RewriteRule ^(.*)$ /$1.php [L]
像这样尝试。 在你.htaccess每个请求不是在磁盘上的文件被重定向到index.php,我猜index.php进一步重定向。 我不认为你只用一行代码就可以得到这个路由/ foo / bar / 123或/ foo / bar。 每个页面都需要自己的重写规则。 你可以再详细一点吗?
我想这可能有帮助。 “/index.php”将委托给错误的路径。
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^ index.php [L]
从Apache 2.2.16开始:
FallbackResource /index.php