我有一个文件,我想parsing从中提取某些值。 我不知道我应该使用什么命令和语法(也许sed ?)。 下面是我可能期望在文件中find的2个示例行。 我需要的是name的值(例如,在本例中分别为1234和xyz )以及jndiName的值。 factories xmi:type="resources.url:URL" xmi:id="" name="1234" jndiName="xyz_aBC" factories xmi:type="resources.url:URL" xmi:id="URL_1323780357724" name="xyz" jndiName="abc" 如果我使用sed ,我将如何在这种情况下应用它?
我想重写所有.mp3文件到一个php文件。 而我不想传递的path 所以http://localhost/somepath/feb.mp3 http://localhost/feb.mp3 应该没有什么区别。 我想出了: RewriteRule ^(.*)\.mp3$ /files/read/?file=$1.mp3 [QSA] 我错过了什么? 也许一些正则expression式(。*)之前,但为什么不拿起MP3模式,并redirect到/files/read/?file=feb.mp3? 这似乎甚至没有赶上MP3文件: applying pattern '^(.*)\.mp3$' to uri 'feb.mp3' 它并没有停在那里,它经历了另一个条件, applying pattern '^.*$' to uri 'feb.mp3' pass through /htdocs/project/project-web/feb.mp3 非常感谢,如果这可以解决。 这是我的完整.htaccess SetEnv APPLICATION_ENV开发 RewriteEngine On RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ – [NC,L] RewriteRule ^(.*)\.mp3$ files/read/?file=$1.mp3 [QSA] RewriteRule […]
我正在为我的个人资料build立一个新的服务器。 在旧的盒子里,我用了近两年的lighttpd。 我已经读了一些,大多数人倾向于转向nginx,因为它的开发更为活跃。 现在我对nginx的威力感到有点不知所措了。 我使用的最酷的事情是“evhost.path-pattern”function,我可以简单地使用或多或less的复杂正则expression式来委托所有域和子域,并定义“evhost.path-pattern =”/ var / www / pages /%0 / subdomains /%3 /“,所以我只需要在”子域名“中创build一个新的文件夹,同样的秒钟,我有一个工作的WebDIR上传东西,新的子域名(或新的域名)。 Nginx有这样的构造: server { server_name ~^(www\.)?(?<domain>.+)$; location / { root /sites/$domain; } } 但现在我有问题寻找一个适当的正则expression式来覆盖域和子域的同时(轻描淡写我已经做了这个RegEx已经赶上了域名,否定了子域名)。 我希望主域名(有和没有“www”)去/ var / www /页// htdocs /和所有子域需要去/ var / www /页/ /子域//。 任何帮助吗?
编辑这个工程,需要使用%代替$捕获组: RewriteRule (.*) http://localhost:8081/%1/%{TIME_YEAR}1101%2 [P] 有一个困难的时间整理出来。 需要一个有条件的注入到特定的URI(用于代理到Jetty应用服务器)的datestring,条件是,如果没有8位数字的datestring已经存在,注入它。 我想到的黑客是: RewriteCond %{REQUEST_URI} ^/(foo|bar|baz)(.*) RewriteCond %2 !/(\d{8})(.*) RewriteRule (.*) http://localhost:8081$1/%{TIME_YEAR}1101$2 [P] 这在某种程度上是有效的,但不是全部,$ 2是空的,$ 1匹配整个URI。 基本上什么事情发生是/foo/2被重写到/foo/2/20121101 ,而我需要发生的是/foo/20121101/2 所以,假设$ 1匹配整个URI,那么我怎样才能使它匹配foo | bar | baz,留下$ 2作为URI余数,然后我可以在date中夹入? 另外,这是一个可怕的低效率的方法? 阿帕奇文档通常指示链接[OR]所以不知道直线正则expression式的路要走(当然更简洁)。 在Apache 2.4上,所以希望实际上可以从速度提升中受益(而不是在脚下自我拍摄) 谢谢
我怎样才能重写下面的链接在Nginx? http://www.example.com/filename/key.value/bar.foo 至 http://www.example.com/filename.php?key=value&bar=foo 请注意.php,请!
我想从Apache重写模块转换为Nginx RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR] RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR] RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR] RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR] RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) RewriteCond %{QUERY_STRING} SELECT(=|\[|\%[0-9A-Z]{0,2}) [OR] RewriteCond %{QUERY_STRING} UNION(=|\[|\%[0-9A-Z]{0,2}) [OR] RewriteCond %{QUERY_STRING} UPDATE(=|\[|\%[0-9A-Z]{0,2}) [OR] RewriteRule ^([^.]*)/?$ index.php [L] RewriteRule ^domain/trial/cms$ index/index.php?%{QUERY_STRING} [L] RewriteCond %{HTTP:Range} ([az]+) [NC] RewriteRule ([0-9_\-]+)flv$ http://www.domain.com [R,L] RewriteCond %{ENV:byte-ranges-specifier} !^$ RewriteRule ([0-9_\-]+)flv$ http://www.domain.com [R,L] […]
我正在按照本教程来设置gitolite,并在某些时候使用以下ScriptAliasMatch: ScriptAliasMatch \ "(?x)^/(.*/(HEAD | \ info/refs | \ objects/(info/[^/]+ | \ [0-9a-f]{2}/[0-9a-f]{38} | \ pack/pack-[0-9a-f]{40}\.(pack|idx)) | \ git-(upload|receive)-pack))$" \ /var/www/bin/gitolite-suexec-wrapper.sh/$1 目标脚本开始 USER=$1 所以我猜这是用来将用户名从Apache转发到suexec脚本(这确实需要它)。 但是我不明白这是怎么完成的。 ScriptAliasMatch文档使我认为/$1将被第一个匹配的正则expression式的匹配组取代。 对我来说,它从(?x)^ /(。* to) ) $捕获,所以这里没有关于用户的信息。 我的根本问题是USER在我的脚本是空的,所以我没有在gitolite授权。 我通过基本身份validation给我的用户名到Apache: <Location /> # Crowd auth AuthType Basic AuthName "Git repositories" … Require valid-user </Location> 在之前的ScriptAliasMatch下定义。 所以我真的想知道这应该如何工作,我错过了什么机制的一部分,所以我不检索我的脚本中的用户。
我工作的网站有这两页: http://www.africananimals.com/stripes/zebras 和 http://www.africananimals.com/news/zebras (这些不是真正的域名,只是例子。) 目录结构最近被重新组织,并且相同页面的URL改为: http://www.africananimals.com/zebras/stripes 和 http://www.africananimals.com/zebras/news 我想要一个mod_rewrite规则(或者更less资源的替代方法,比如Redirect命令或类似的东西)来使那些同时拥有旧url的页面的爱好者受益。 我需要这个工作http // www.africananimals.com和http // africananimals.com /版本的URL。 我的解决scheme是这样的: Redirect /stripes/zebras http://www.africananimals.com/zebras/stripes Redirect /news/zebras http://www.africananimals.com/zebras/news – 但我不确定我是否正确 在正则expression式上很糟糕,对.htaccess只有肤浅的理解,我一定会感激一些指导。
我认为*意味着在基本或扩展正则expression式之前的零个或更多的字符或类。 为什么echo hello| grep '*llo' echo hello| grep '*llo'失败,但echo hello |egrep '*llo'成功了吗?
我试图抓住斜杠之间的variables,并将它们传递给我的pipe理脚本,在Nginx中有以下重写行: rewrite ^/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)$ /index.php?p1=$1&p2=$2&p3=$3&p4=$4&p5=$5&p6=$6; 如果我请求页面less于6个variables(例如:/ var1 / var2 / var3 / var4 / var5 /)404s。 是否有可能使用less于6个variables? (我将需要在我的Web应用程序的不同部分完整的6个variables) 使用Nginx 1.4.1-1.el6 64bit + PHP-FPM在OpenVZ中运行CentOS 6。 提前致谢。