最近很多小伙伴都在问.htaccessRewriteRule保留GETURL参数和url保留字符这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展.htaccessmod_rewri
最近很多小伙伴都在问.htaccess RewriteRule保留GET URL参数和url保留字符这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展.htaccess mod_rewrite子目录到URL参数、.htaccess RewriteRule 提供正确的链接,但也提供 404、.htaccess RewriteRule添加到URL的驱动器path、.htaccess – URL Rewrite在Nginx中不起作用等相关知识,下面开始了哦!
本文目录一览:- .htaccess RewriteRule保留GET URL参数(url保留字符)
- .htaccess mod_rewrite子目录到URL参数
- .htaccess RewriteRule 提供正确的链接,但也提供 404
- .htaccess RewriteRule添加到URL的驱动器path
- .htaccess – URL Rewrite在Nginx中不起作用
.htaccess RewriteRule保留GET URL参数(url保留字符)
htaccess url重写后,保持URL的参数正常工作时出现问题。
我的htaccess重写如下:
RewriteEngine on RewriteRule ^([a-z]{2,2})/([a-zA-Z0-9_-]+)$ index.php?lang=$1&page=$2
意思是:
domain.com/index.php?lang=en&page=product
显示为 domain.com/en/product
出于某种原因,当我?model=AB123&color=something
在URL的末尾添加a
时$_GET[''model'']
,$_GET[''color'']
即使显示的URL中存在这些参数,也无法使用php检索这些参数。
为什么不传递变量?
答案1
小编典典您需要附加[QSA](查询字符串附加)标签。尝试
RewriteEngine onRewriteRule ^([a-z]{2,2})/([a-zA-Z0-9_-]+)$ index.php?lang=$1&page=$2 [QSA]
参见http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html
.htaccess mod_rewrite子目录到URL参数
我希望这个问题不会一遍又一遍地被提出来,但是我没有深入到使用google,w3schools等等的答案。 所以这里是我的问题:我正在编写一个脚本,它创build了一些我在主页上的项目索引,并根据一个信息文件制作了一个包含图像和传情文本的好列表。 我主要有我的项目在github上,自述是在降价,所以我想我可以dynamic生成从github的最新blob的markdown使用PHP的需求,所以它会自动更新的HTML。 我的目录结构如下所示:
projects project1 .remoteindex .info project2 .remoteindex .info index.PHP .htaccess
所以当只有domain.tld/projects/被请求的时候,我从.info获得信息,并为所有的项目build立一个好的索引。 但是,如果domain.tld/projects/project1/正在请求它,我想在内部redirect到domain.tld/projects/?dir=project1来做我的markdownparsing等等。 但是domain.tld/projects/project1/image.png不应该被redirect。
这是我试过的:
.htaccess RewriteEngine on RewriteRule ^([^/]+)/?$ index.PHP?dir=$1 [R,L]
我做了redirect而不是重写,所以我可以看到错误是什么,因为我刚刚得到了404。我被redirect到的URL是domain.tld/home/www/web310/html/projects/index.PHP?dir=project1所以显然有一些错误的内部结构的Web服务器的path一样。 我希望你能理解我的问题,如果有人能帮助我,我会很高兴,因为我完全无法使用.htaccess 。
将通配符子域redirect到子目录,而不更改地址栏中的URL
recursionmod_rewritesearch引擎友好的url
.htaccess重写:子域名作为GET参数和文件path完好无损后
在.htaccess中使用基于环境variables的RewriteCond
PRESTASHOP Nginx + REWRITE规则
编辑:
看到我的答案下面的使用.htaccess 。
奇怪的是,如果我在子目录中有一个index.html ,我的本地Web服务器(带有Mac OS X 1.7.3的XAMPP的Apache)不会重写,并且index.html会显示出来,而没有一个工作正常但是在我服务我的主页的真实web服务器上,它改写了index.html (这是我想要的)。 有什么提示?
mod_rewrite不适用于Windows 7上的Apache 2.2
在apache localhost服务器上使用.htaccess文件
Htaccess维护模式允许某些目录
使用Nginx的try_files将所有非现有文件的请求重写为index.PHP
使用.htaccess重写GET查询string
感谢所有的帮助! 你们真棒!
我发现两种解决方案的共生对我来说很合适:
RewriteEngine on RewriteBase /projects RewriteCond %{SCRIPT_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} -d RewriteRule ^([^/]+)/?$ index.PHP?dir=$1 [QSA,L]
当然只有没有[R] ,这是我的错。 (请参阅我的问题请编辑另一个问题)。
你需要添加一个RewriteBase /projects到htaccess。 这样的重定向将正常工作。
编辑:
RewriteEngine on RewriteRule ^index.PHP - [L] RewriteRule ^([^/]+)/?$ index.PHP?dir=$1 [R,L]
按照你的要求,重要的是不要做重定向,但是让重写过程在内部修改URL即RewriteRule不应该以[R,L]结束,而应该是[L] ,也许“ query string append ”指令保留那是什么? 所以这应该是[QSA,L] 。
下面是我如何避免重写静态文件:如果它不是一个文件然后(并且只有那样)测试它:
# if it''s not a file... RewriteCond %{SCRIPT_FILENAME} !-f # ... and it''s a dir RewriteCond %{SCRIPT_FILENAME} -d # ... then rewrite it internally and stop further processing: RewriteRule projects/([^/]+)(/?)$ index.PHP?dir=$1 [QSA,L]
现在有两个提示:
请尝试使用RewriteLog指令:它可以帮助你追踪这样的问题:
# Trace: # (!) file gets big quickly,remove in prod environments: RewriteLog "/web/logs/mywebsite.rewrite.log" RewriteLogLevel 9 RewriteEngine On
我最喜欢的工具来检查正则表达式:
http://www.quanetic.com/Regex (不要忘了选择ereg(POSIX)而不是preg(PCRE)!)
总结
以上是小编为你收集整理的.htaccess mod_rewrite子目录到URL参数全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
.htaccess RewriteRule 提供正确的链接,但也提供 404
根据您展示的样品,您可以尝试以下操作吗?公平的警告我已经在移动设备上写了这个,所以还没有测试它应该可以工作恕我直言也会在某个时候测试它。此外,由于您提到可能有多个域,所以我特意在此处添加了一个条件来检查它是否是 example.nl,以防您想重写对任何域的请求,那么我们也可以省略该条件。
RewriteEngine ON
RewriteCond %{HTTP_HOST} ^example\.nl$ [NC]
RewriteRule ^([a-zA-Z]+)/?$ %{HTTP_HOST}/_sites/$1 [L]
注意:如果您的目录/文件夹不一定以字母开头并且可以是任何内容,则将上面的正则表达式从 ^([a-zA-Z]+)/?$
更改为 ^([.*])/?$
无需硬编码主机名,您可以在站点根目录 .htaccess 中尝试以下规则:
RewriteCond %{HTTP_HOST}::%{THE_REQUEST} ^(?:www\.)?([^:]+)::GET\s/+\1/_sites/(\S*)\s [NC]
RewriteRule ^ /%2 [R=301,NE,L]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^[^/]+/?$ %1/_sites%{REQUEST_URI} [L]
.htaccess RewriteRule添加到URL的驱动器path
我使用安装在Win7机器上的C:上的Zend Server CE(v.5.1.0)。 我添加了一个项目到httpd.conf :
Alias /project "D:Homepagesproject" <Directory "D:Homepagesproject"> Options Indexes FollowSymLinks AllowOverride all Order allow,deny Allow from all </Directory>
项目目录中的.htaccess文件包含以下内容:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} -f RewriteCond %{REQUEST_URI} ^/w*.(css|js) [NC] RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.PHP [NC,L]
现在来解决这个问题。 如果我去
HTTP://localhost/project/index.PHP
重写浏览器的位置栏中显示的规则
重写URL的Glype(Nginx)
设置x-frame-options来允许和禁止某些URL来构build一个页面
需要htaccessredirect
从https转换到http时,RewriteRule违反
一切似乎工作正常。 我到达index.PHP文件并得到我的内容。 但是,如果我去任何其他页面,将触发RewriteRule,似乎是添加目录path。 FireFox输出以下Not Found消息:
在此服务器上找不到请求的URL /Homepages/project/index.PHP。
我试图在这里find类似的问题/答案,但失败了。 任何想法? PS。 我接受一个答案可能会延迟,因为我会出差一段时间。
将URL重写为index.PHP,但避免在URL中使用index.PHP
.htaccess – RewriteCond:坏标志分隔符
使用Apacheconfiguration为每个站点指定PHP包含目录
如何处理自定义url模式的重写?
easyPHP .htaccess规则
让你的最后一行是这样的:
RewriteRule ^.*$ /index.PHP [NC,L]
但是我认为这是无限循环,所以我会建议这个规则:
RewriteCond %{THE_REQUEST} !s/index.PHP [NC] RewriteCond %{REQUEST_URI} !^/index.PHP [NC] RewriteRule . /index.PHP [L]
如果它已经是/index.PHP,则防止进入index.PHP。
您需要设置RewriteBase指令; 否则,会自动mod_rewrite,并且默认情况下会将文件路径预加重到生成的重写规则。
来自: http : //httpd.apache.org/docs/2.0/mod/mod_rewrite.html
当一个新的URL发生替换时,这个模块必须重新将这个URL注入到服务器处理中。 为了能够做到这一点,它需要知道相应的URL前缀或URL基础是什么。 默认情况下,这个前缀是相应的文件路径本身。 但是,对于大多数网站来说,URL并不直接与物理文件名路径相关,所以这个假设通常是错误的! 因此,您可以使用RewriteBase指令来指定正确的URL前缀。 如果您的网络服务器的URL与物理文件路径没有直接关系,那么您将需要在每个要使用RewriteRule指令的.htaccess文件中使用RewriteBase。
总结
以上是小编为你收集整理的.htaccess RewriteRule添加到URL的驱动器path全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
.htaccess – URL Rewrite在Nginx中不起作用
URL重写在Nginx中不起作用,操作系统是Ubuntu 12.4 Lts
当打开http://mvc.loc它正在工作
但是当我试图打开http://mvc.loc/login不工作时
404未找到
Nginx的/ 1.1.19
.htaccess
<IfModule !mod_rewrite.c>
ErrorDocument 500 "mod_rewrite must be enabled"
</IfModule>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$/index.PHP?u=$1
mvc.loc的虚拟主机
server {
listen 80;
server_name mvc.loc;
access_log /var/log/Nginx/mvc.loc.access.log;
error_log /var/log/Nginx/mvc.loc.error.log;
root /usr/share/Nginx/www/mvc;
index index.PHP;
# use fastcgi for all PHP files
# Are you sure you have this set up?
location ~ \.PHP${
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.PHP;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# deny access to apache .htaccess files
location ~ /\.ht {
deny all;
}
}
解决方法:
location / {
rewrite ^(.*)$/index.PHP?u=$1 last;
}
关于.htaccess RewriteRule保留GET URL参数和url保留字符的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于.htaccess mod_rewrite子目录到URL参数、.htaccess RewriteRule 提供正确的链接,但也提供 404、.htaccess RewriteRule添加到URL的驱动器path、.htaccess – URL Rewrite在Nginx中不起作用等相关内容,可以在本站寻找。
本文标签: