标签: rewrite

将Perl翻译为Python

我在将SQLite数据库迁移到mysql时发现了这个Perl脚本

我想知道(因为我不知道Perl)如何在Python中重写这个?

最短(代码)答案的奖励积分:)

编辑:对不起我的意思是最短的代码,而不是严格的最短答案

#! /usr/bin/perl

while ($line = <>){
    if (($line !~  /BEGIN TRANSACTION/) && ($line !~ /COMMIT/) && ($line !~ /sqlite_sequence/) && ($line !~ /CREATE UNIQUE INDEX/)){

        if ($line =~ /CREATE TABLE \"([a-z_]*)\"(.*)/){
                $name = $1;
                $sub = $2;
                $sub =~ s/\"//g; #"
                $line = "DROP TABLE IF EXISTS $name;\nCREATE TABLE IF NOT EXISTS $name$sub\n";
        }
        elsif ($line =~ /INSERT INTO \"([a-z_]*)\"(.*)/){
                $line = "INSERT INTO $1$2\n";
                $line =~ s/\"/\\\"/g; #"
                $line =~ s/\"/\'/g; #" …
Run Code Online (Sandbox Code Playgroud)

python perl rewrite

21
推荐指数
4
解决办法
1万
查看次数

重写pushState-URL的nginx

我正在尝试nginx使用我在Javascript应用程序中为我管理的pushState基于URI的URI处理backbone.js.

现在正在访问一个级别的URI,例如.example.com/users效果很好,但不是两级或更深的URI,例如Backbone文档中example.com/users/all提到的:

例如,如果您的路径为/ documents/100,则如果浏览器直接访问该网址,您的网络服务器必须能够提供该网页

因此,我不太了解nginx的重写选项,我仍然确定我可以做一些事情,比如rewrite ^ /index.html;将所有内容重定向到我的内容index.html,但是丢失了存储在我需要的同一台服务器上的任何最终静态文件(图像,javascript和css)能够访问.

那么我应该怎样做以下所示的当前配置,以使其工作?

server {
    listen   80;
    server_name  example.com;

    location / {
        root   /var/www/example.com;
        try_files $uri /index.html;
    }

}
Run Code Online (Sandbox Code Playgroud)

rewrite nginx backbone.js pushstate

21
推荐指数
4
解决办法
1万
查看次数

用于角度js的apache 2的重写规则

显然,整个网络上都有很多mod重写讨论和答案.但是,我很难抓住它们.所以我想我会问这里.

我要求重写规则来做Andy Joslin在评论中解释的内容:https://stackoverflow.com/a/11100438

这是我在example.com根目录下的当前dir结构

  • 应用程序/
  • app/index.html(角度js应用程序的"根")
  • api(这将是一个用于'api'的symfony 2应用程序.我将从角度向这里发送ajax请求.)

我想将所有请求重定向到app/index.html,除了对/ api的请求.

例如:

http://example.com/categories/electronics/ipod实际上就像去http://example.com/app/index.html/categories/electronics/ipod

我想隐藏app/index.html部分.

然后,对http://example.com/api的请求会有例外,因为我需要向这些url路径发出ajax请求.

感谢您提供的所有帮助/指导.

apache mod-rewrite rewrite angularjs

21
推荐指数
2
解决办法
2万
查看次数

使用301或303将http重定向到https

从http重定向到https时,我不确定哪个网站最适合我的网站使用.目前我正在使用IIS重写规则来进行重定向.我读过关于如何使用301或303的指南.在阅读301和303之后,我仍然不确定哪个最好用.

我的理解是它们与http和https之间的重定向非常相似.

有什么区别,它会以任何方式影响搜索引擎优化吗?

从规格:301

301(永久移动)状态代码表示已为目标
资源分配了新的永久URI,并且
此资源的任何将来引用都应使用其中一个附带的URI.
具有链接编辑功能的客户端应尽可能自动将对有效请求URI的引用重新链接到
服务器发送的一个或多个新引用.

服务器应该在响应中生成一个Location头字段,其中包含新永久URI的首选URI引用.该
用户代理可以使用自动位置字段值
重定向.服务器的响应有效负载通常包含一个短
超文本注释,其中包含指向新URI的超链接.

  Note: For historical reasons, a user agent MAY change the request
  method from POST to GET for the subsequent request.  If this
  behavior is undesired, the 307 (Temporary Redirect) status code
  can be used instead.
Run Code Online (Sandbox Code Playgroud)

默认情况下,301响应可缓存; 即,除非
方法定义或显式高速缓存控制另有指示

303

303(请参阅其他)状态代码表示服务器正在
将用户代理重定向到其他资源,如Location头字段中的URI所示,该URI旨在提供
对原始请求的间接响应.用户代理可以执行
针对该URI的检索请求(如果
使用HTTP 则为GET或HEAD请求),其也可以被重定向,并将最终结果作为原始请求的答案呈现.请注意,
Location头字段中的新URI 不被视为等效于
有效请求URI.

此状态代码适用于任何HTTP方法.它主要用于允许输出POST操作以将用户代理重定向
到选定的资源,因为这样做
可以单独
识别,添加书签和缓存的形式提供与POST响应相对应的信息,而与原始
要求.

对GET请求的303响应指示源服务器不具有
可由服务器通过HTTP传送的目标资源的表示.但是,"位置"字段
值是指描述目标
资源的资源,因此对该其他资源发出检索请求可能会导致对收件人有用的表示,而不会暗示它表示原始目标资源.请注意,
对可以表示的内容,什么
表示形式以及可能有用的描述的问题的答案
超出了HTTP的范围.

除了对HEAD请求的响应之外,303响应的表示应该包含一个短的超文本注释,其中包含指向
Location头字段中提供的相同URI引用的超链接.

https seo redirect rewrite http

21
推荐指数
1
解决办法
3万
查看次数

.htaccess有或没有斜线

我需要对以下重写规则做什么才能使其无论是否在URL的末尾都是斜杠?

即. http://mydomain.com/content/featuredhttp://mydomain.com/content/featured/

RewriteRule ^content/featured/ /content/today.html 
Run Code Online (Sandbox Code Playgroud)

.htaccess mod-rewrite rewrite

19
推荐指数
1
解决办法
1万
查看次数

Apache重写规则,可以使用或不使用尾部斜杠

我正在尝试重定向一系列静态URL,无论是否存在尾部斜杠,我希望它能够正常工作:

/foo/bar  --->  /tacos
/foo/bar/  -->  /tacos
Run Code Online (Sandbox Code Playgroud)

我已经尝试了以下各种变化,但我总是只得到一个匹配的斜杠:

RewriteRule ^foo/bar?/$ http://url.com/tacos
RewriteRule ^foo/bar(?/)$ http://url.com/tacos
RewriteRule ^foo/bar*/$ http://url.com/tacos
RewriteRule ^foo/bar(*/)$ http://url.com/tacos
Run Code Online (Sandbox Code Playgroud)

我觉得我错过了一些明显的东西.救命?

regex url rewrite

19
推荐指数
2
解决办法
3万
查看次数

删除nginx重写中的参数

我重新启动后在nginx中重写URL.在旧网站中,我在URL中有查询参数来过滤内容,例如

http://www.example.com/mypage.php?type=4
Run Code Online (Sandbox Code Playgroud)

新页面没有这些参数.我想删除它们并将URL重写到主页面,以便我得到:

http://www.example.com/mypage/
Run Code Online (Sandbox Code Playgroud)

我在nginx中的重写规则是:

location ^~ /mypage.php {
    rewrite ^/mypage.php$ http://www.example.com/mypage permanent;
}
Run Code Online (Sandbox Code Playgroud)

但是使用此规则,参数仍会附加.我认为这$会阻止nginx处理更多的价值......任何想法?所有其他问题都涉及如何添加参数 - 我只想删除我的:)

rewrite get nginx

19
推荐指数
4
解决办法
4万
查看次数

Apache 2.4 - 由于可能的配置错误,请求超出了10个内部重定向的限制

我在Windows Server 2008 R2 Enterprise上运行Apache 2.4(64位)和PHP 5.4.15,并注意到Apache错误日志中出现以下错误:

AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.
Run Code Online (Sandbox Code Playgroud)

我有一个多站点安装的WordPress运行,我认为该错误来自htaccess重写中的错误.

查看此帖子: 由于可能的配置错误,请求超出了10个内部重定向的限制.

他们建议替换这个:

# BEGIN Wordpress
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Run Code Online (Sandbox Code Playgroud)

这段代码,由Scott Yang提供:

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteBase /
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule ^(.+)$ /index.php/$1 …
Run Code Online (Sandbox Code Playgroud)

apache wordpress .htaccess rewrite

19
推荐指数
3
解决办法
9万
查看次数

Apache:编辑.conf文件会产生"无效命令'标题'"

在Magento CE中,我想安装一个名为Lightening Cache的Extendware Page Cache附加组件.

它需要通过添加以下内容编辑站点的虚拟主机定义中的Apache配置:

RewriteEngine On
RewriteMap ewpchash prg:/home/.../shell/extendware/ewpagecache/apache/md5.php

RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{REQUEST_URI} !\.(js|css|png|jpg|jpeg|ico|gif)$ [NC]
RewriteCond %{DOCUMENT_ROOT}%{SCRIPT_FILENAME} !-f
RewriteCond ${ewpchash:%{HTTPS};~;%{HTTP_HOST};~;%{REQUEST_URI};~;%{QUERY_STRING};~;%{HTTP:Cookie};~;%{SCRIPT_FILENAME};~;%{REMOTE_ADDR};~;%{HTTP_USER_AGENT}} -f
RewriteRule ^(.*)$ ${ewpchash:%{HTTPS};~;%{HTTP_HOST};~;%{REQUEST_URI};~;%{QUERY_STRING};~;%{HTTP:Cookie};~;%{SCRIPT_FILENAME};~;%{REMOTE_ADDR};~;%{HTTP_USER_AGENT}} [NC,L]
<FilesMatch "\.(html)$">
     Header unset Cache-Control
     Header unset Expires
     Header append Expires "Thu, 19 Nov 1981 08:52:00 GMT"
     Header append Cache-Control "must-revalidate"
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)

我已将此添加到/etc/apache2/sites-enabled/site.conf的底部

当我运行命令"apachectl graceful"时,我收到错误:

AH00526:/etc/apache2/sites-enabled/site.conf第53行的语法错误:无效的命令'Header',可能拼写错误或由服务器配置中未包含的模块定义操作'graceful'失败.Apache错误日志可能包含更多信息.

网站正在运行Apache 2.4

我做错了什么吗?

apache rewrite magento

18
推荐指数
1
解决办法
2万
查看次数

nginx - 将某个路径重定向到另一个域

我对nginx非常不熟悉,作为预警,也找不到他们使用的正则表达式系统的任何实际参考.所以现在对我来说这是一个黑盒子.

我想要做的就是将试图访问www.mydomain.com/mydirectory/X的用户重定向到www.myotherdomain.com/X.

好像我应该使用重写命令,但正则表达式的语法正在逃避我.

提前致谢.

regex redirect rewrite nginx

17
推荐指数
1
解决办法
2万
查看次数