我正在使用文件夹结构,如下所示: 当前网址: http://test.com/modules/login/login.php?v=1&v2=2&v3=3
我在尝试: http://test.com/modules/login/login/v/1/v2/2/v3/3
我的根文件在:http://test.com/
之后开始我正在尝试编写.htaccess来隐藏URL中的GET方法值和.php文件名,但由于更多树形结构的URL,我遇到了问题。
RewriteEngine On
RewriteRule ^([^/]+)/([^/]+)$ login.php?$1=$2 [QSA,L]
RewriteRule ^([^/]+)/([^/]+)$ login.php?$1=$2&$3=$4 [QSA,L]
RewriteRule ^([^/]+)/([^/]+)$ login.php?$1=$2&$3=$4&$5=$6 [QSA,L]
以上方法无效?
我们是否需要为单个文件编写规则,是否可以在单一规则中完成?
我也尝试了以下内容:
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)/([0-9]+)$ login.php?user=$1&page=$2
RewriteRule ^([a-zA-Z0-9_-]+)/([0-9]+)/$ login.php?user=$1&page=$2
我的文件夹结构:
----Myproject
-------Config
------------config.php
-------Includes
------------Images
-----------------image.jpg
------------CSS
-----------------test.css
------------JS
-----------------test.js
-------Modules
------------Home
-----------------index.php
------------settings
-----------------config.php
------------login
-----------------login.php
------------Contact
------------MyPage
-------(.htaccess)
答案 0 :(得分:1)
在DOCUMENT_ROOT/.htaccess
文件中使用此代码:
RewriteEngine On
RewriteRule ^(modules/[^/]+/[^/]+)/([^/]+)/([^/]+)(/.*)?$ /$1/$4?$2=$3 [L,QSA,NC]
RewriteCond %{REQUEST_URI} !\.php$
RewriteRule ^(modules/[^/]+/[^/]+)/?$ /$1.php [L,NC]
RewriteRule ^(modules/[^/]+/[^/]+)/([^/]+)/([^/]+)(/.*)?$ /$1/$4?$2=$3 [L,QSA,NC]
RewriteCond %{REQUEST_URI} !\.php$
RewriteRule ^(modules/[^/]+/[^/]+)/?$ /$1.php [L,NC,R]
答案 1 :(得分:0)
使用下面的代码
RewriteEngine On
RewriteBase /give your full path of your project/
#for hidding get request
# Redirect /login?id=2 to /login/2
RewriteCond %{THE_REQUEST}^[A-Z]/+login\?id=([^&\s]+) [NC]
RewriteRule ^ /login?%1 [R=302,L]
#for hidding .php extension
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [QSA,L]
答案 2 :(得分:0)
你想做什么? 传入 URL(搜索引擎友好/搜索引擎优化?)看起来是什么样的,需要转换为什么才能使PHP文件工作呢?你的问题规范非常朦胧。举一些例子。