在htaccess中传递多个参数并包含基于它们的文件

时间:2013-09-19 07:27:53

标签: php .htaccess mod-rewrite

我目前正在开展一个项目,我必须在网址中传递三个参数。我的网址看起来像 -

本地主机/ newproject / index.php的FILE_NAME =客户&安培;模式=编辑和ID = 1

下面列出了传递不同参数时执行的功能

1)网址 - localhost / newproject / index.php?file_name = clients

功能 - 包含文件templates / modules / clients / clients.php

2)网址 - localhost / newproject / index.php?file_name = clients& mode = edit

功能 - 包含文件模板/ modules / clients / cliemts-edit.php。客户端编辑屏幕将用于添加新客户端,因为未设置客户端ID。

3)网址 - localhost / newproject / index.php?file_name = clients& mode = edit& id = 1

功能 - 包含文件模板/ modules / clients / cliemts-edit.php。客户端编辑屏幕将用于更新client_id为1的客户端。现在,我正在尝试将此URL转换为此

本地主机/ newproject /客户端/编辑/ 1

我的htaccess

中有以下代码
RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ index.php?file_name=$1&mode=$2&id=$3 [L]
RewriteRule ^([^/\.]+)$ index.php?file_name=$1 [L]

我面临的问题是,每当包含客户端编辑屏幕时,css文件,javascript文件和图像的路径都会发生变化。我怎么能克服这个?

1 个答案:

答案 0 :(得分:0)

你走在正确的轨道上。

尝试:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ index.php?file_name=$1&mode=$2&id=$3 [L]

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

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

为了修复css / scripts,您需要创建链接绝对URL(它们以/开头)或在页面标题中包含相对URI基础:

<base href="/" />