我有一个ajax webapp,我想使索引到谷歌。 我的path使用hashbang,如下所示: http://tld.com/?_escaped_fragment_en/news http://tld.com/?_escaped_fragment_de/news 要么 http://tld.com/?_escaped_fragment_en/news/news-item-name http://tld.com/?_escaped_fragment_de/news/news-item-name 考虑到networking的无限方式,也可能是我的URL看起来像下面这样: http://tld.com/index.html?_escaped_fragment_en/news/news-item-name 要么 http://tld.com/index?_escaped_fragment_en/news/news-item-name 我有一个包含标记的文件,应该在search引擎的一个名为“fragments”的文件夹中可见,这个文件夹在网站的documentroot的根目录下。 这些按文件夹组织,如: /fragments/en/ -> containing a file called news 要么 /fragments/en/ -> /news , containg a file called news-item-name Google根据https://developers.google.com/webmasters/ajax-crawling/docs/specification的规定将这些文件作为?_escaped_fragment_请求。 我需要创build一个Apache重写规则,即映射一个请求,例如, http://tld.com/index.html?_indexed_fragment=en/news/news-item-name 到我的文件系统上的相关文件(/ fragments / en / news / news-item-name),以便快照可以被提供给爬虫。 我目前有以下规则: RewriteEngine On RewriteCond %{QUERY_STRING} ^_escaped_fragment_=(.*)$ RewriteRule ^$ /fragments/%1 这些不幸的是不能处理文件夹结构,他们只是在片段目录中寻找一个文件。
我有这个URL重写规则 RewriteRule ^(send-your-request.*)$ / [NC,L,QSA,R=301] 它应该基本上只是从URL中删除“/发送你的请求”(即重写它的查询string参数从域即 http://example.com/send-your-request/?a_aid=rocketnews24&pname=just%20a%20test 被重写为: http://example.com/?a_aid=rocketnews24&pname=just%20a%20test 在这种情况下,它的工作,但如果我添加最后一个参数,它停止工作 http://example.com/send-your-request/?a_aid=rocketnews24&pname=just%20a%20test&plink=http%3A%2F%2Fradio-eva.jp%2Fshop%2Fproducts%2Fdetail.php%3Fproduct_id%3D82 任何人都可以告诉我一个更好的重写规则,可以处理所有的查询string参数? 编辑这里是我的其他规则,但我有第一个“L”,所以它应该停止处理权? RewriteRule ^(send-your-request.*)$ / [NC,QSA,R=301,L] Redirect 301 /products http://whiterabbitexpress.com/ RewriteRule ^index\.php$ – [L] RewriteCond %{QUERY_STRING} ^(.*)q=(.*)$ RewriteRule ^(.*)$ $1?%1s=%2 [L,R=301] RewriteRule ^catalogsearch/result/?$ / [NC,QSA,L,R=301] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]
以下重写条件之间是否有任何差异(微妙或其他) RewriteCond %{HTTP_HOST} ^www.mysite.co.uk$ 和 RewriteCond %{HTTP:Host} ^www.mysite.co.uk$ 在第二个示例中,我通过指定HTTP标头名称来访问主机名称: Host 。 从表面上看,它们看起来行为完全一样,如果我把重写日志logging到3 ,日志文件显示相同的活动。 %{HTTP_HOST}是%{HTTP:Host}的同义词吗? 例如, %{HTTP_HOST}已经提前填充/绑定,而%{HTTP:Host}可能会导致查找惩罚?
情况如下: 我最近在www.pixelscrapper.com重新构build了我的网站。 我仍然在legacy.pixelscrapper.com(托pipe在同一台服务器上)旧的旧版网站。 是否有可能使用Apache htaccess重写规则,使我的旧内容显示在我的新网站上的子目录下? 换句话说,我希望能够访问www.pixelscrapper.com/legacy/some-folder/some-item并查看实际位于legacy.pixelscrapper.com/some-folder/some-item的内容。 一直在四处搜寻,没有太多的成功。 我以为像下面这样的东西可能会有诀窍,但也许我走了吗? RewriteCond %{HTTP_HOST} ^pixelscrapper.com$ RewriteRule ^/legacy/?$ http://legacy.pixelscrapper.com/ [R=301,L]
我在我的htaccess中写了一个规则,基本上这样说: 如果请求的是主页 而cookie尚未设置 用/addCookie.php重写页面 然后在addCookie.php中,我们设置cookie并redirect回主页。 这一切都很好,但如果用户不接受cookie,我们会得到一个无限循环的redirect。 我是新来的mod_rewrite,我做了很多search,但不能打破循环。 我到目前为止: RewriteCond %{ENV:REDIRECT_STATUS} 200 RewriteRule .* – [S=1] RewriteCond %{REQUEST_URI} "^/$" RewriteCond %{HTTP_COOKIE} !device_detected RewriteRule ^ addCookie.php [L] 我正在尝试做什么? 我可以添加一个查询string从addCookie.php的redirect,但我宁愿保持相同的请求。 任何build议,慷慨欢迎。
我的MediaWiki有一个非常奇怪的问题,我想要mywiki.org/MyArticleforms的mywiki.org/MyArticle 。 现在我使用下面的代码大部分工作,但它神秘地不能显示标志了。 RewriteEngine On # don't rewrite valid requests to files and directories RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d # mywiki.org/MyArticle gets rewritten to mywiki.org/index.php/MyArticle RewriteRule ^/(.*)$ /index.php/$1 [L,QSA] 现在,当我在浏览器中键入mywiki.org/img/logo.jpg ,地址变成了http://wiki.geoknow.eu/Img/logo.jpg (大写I),我进入了空白文章页面,但是图像肯定是存在的(在我的文档根目录下的img文件夹): /var/www/mywiki.org$ ls img logo.jpg 到目前为止这么糟糕。 但现在它变得非常疯狂:当我添加RewriteCond %{REQUEST_URI} !^/.*\.jpg我的地址仍然被重写,并且我的访问日志说 – – [05/Dec/2012:16:30:21 +0100] "GET /Img/geoknow_logo.jpg HTTP/1.1" 404 509 "-" "Mozilla/5.0 (X11; Linux x86_64; […]
在使用Lighttpd的两台主机上configurationmod_rewrite时遇到问题。 我有一个是旧的更新版本。 旧的不使用mod_rewrite ,而新的。 但问题是,如果我在lighttpd.conf启用该模块,那么即使在我没有configuration它来进行任何redirect的情况下,旧的也会redirect。 这是我的conf文件: $HTTP["host"]=~"test.org" { server.document-root = "/var/www/virtual/acruz/www/public/" server.errorlog = "/var/www/virtual/acruz/logs/error.log" accesslog.filename = "/var/www/virtual/acruz/logs/access.log" url.rewrite-once = ( ".*\.(js|ico|gif|jpg|png|css|)$" => "$0", "^/.*(\?.*)" => "/index.php$1", "" => "/index.php" ) } $HTTP["host"]=~"r5.test.org" { server.document-root = "/var/www/virtual/acruz/r5/" server.errorlog = "/var/www/virtual/acruz/logs/error.log" accesslog.filename = "/var/www/virtual/acruz/logs/access.log" setenv.add-environment = ("env" => "acruz") }
如果在主目录中不存在index.html或index.php文件,是否可以将(通过Rewrite Cond?)用户redirect到另一个URL以获得帮助? 感谢Greg
我们的OpenCart运行在Lighttpd上,我们使用mod_rewrite进行search引擎优化。 每当我们有我们的重写规则,GET请求,如http://www.site.com/dev/?gclid=XXX不起作用。 这里是我目前的OpenCart重写规则: server.modules += ( "mod_rewrite" ) url.rewrite = ( "^(.*)–v[^/]*–(.*)$" => "$1$2" ) url.rewrite-once = ( "^/dev/$" => "/dev/index.php?route=common/home") url.rewrite-if-not-file = ( "^/dev/(.*)" => "/dev/index.php?_route_=$1") 我需要添加哪些规则来启用GET请求?
我打算在我的Raspberry PI(Wheezy 3.2.27)上安装和configurationRSS Lounge 。 这是当我去http://localhost/rsslounge : Apache模块“mod_rewrite”未加载 但是,重写模块已启用: ab@1234 : sudo apache2ctl -t -D DUMP_MODULES Loaded Modules: core_module (static) log_config_module (static) logio_module (static) version_module (static) mpm_prefork_module (static) http_module (static) so_module (static) alias_module (shared) auth_basic_module (shared) authn_file_module (shared) authz_default_module (shared) authz_groupfile_module (shared) authz_host_module (shared) authz_user_module (shared) autoindex_module (shared) cgi_module (shared) deflate_module (shared) dir_module (shared) env_module […]