在这种情况下,有无数的教程可以检查cookie是否存在并包含我的内容foobar.
我如何做以下假设mycookie是我想要设置的cookie.
if ($cookie_mycookie does not equal "foobar") {
return 401;
}
Run Code Online (Sandbox Code Playgroud)
我试过以下无济于事.
if (!$http_mycookie ~* "foorbar" ) {
return 401;
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
这是一个非常简单的问题:如何运行可以同时处理多个主机的Yesod应用程序?
默认的Yesod设置可以处理来自任何主机的传入连接,但所有URL都会approot在它们前面进行渲染.joinPath如果存在一种存储当前域的方式以便该函数可用,那么覆盖Yesod实例声明是可能的,但是没有.
这个维基页面上描述的方法有效,但是非常hackish,因为它强制路由采取额外的domain参数(因为我没有一组静态的域匹配).出于实际目的(因为我有很多路由,其中一些是与域无关的),最好有一个解决方案使路由不受影响,因为仍然可以从WAI请求信息中获取主机名.处理函数.
我使用需要绝对URL的东西(例如电子邮件,RSS,XML API),因此approot _ = ""不是一种选择.
我不能也不能在编译时知道需要支持的所有主机名.
那么,如何呈现URL以便它们使用传入请求的主机名,而不是approot变量?
我已经查看了几个子目录中网站的htaccess配置示例,并尝试了其中大部分没有100%成功.
我的设置是:
public_html/.htaccesspublic_html/mysite目录内public_html/mysite/frontend/www/index.php网址的状态:
www.mysite.com工作正常[ok]www.mysite.com/controller/action给我看主页[错]www.mysite.com/mysite/frontend/www/controller/action工作正常[错误,上面的项目应该工作]我的.htaccess目前看起来像这样:
AddHandler application/x-httpd-php53s .php .html
Options +SymLinksIfOwnerMatch
IndexIgnore */*
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^(www.)?mysite.com$
RewriteCond %{REQUEST_URI} !^/mysite/frontend/www
RewriteRule ^(.*)?$ /mysite/frontend/www/index.php [L]
Run Code Online (Sandbox Code Playgroud)
我已经尝试了一切,但我不知道为什么www.mysite.com/controller/action不起作用:(
任何帮助将非常感激!谢谢!
在我的本地机器上,以下工作完美:
<VirtualHost *:80>
##ServerAdmin postmaster@dummy-host2.localhost
DocumentRoot "C:/xampp/htdocs/website_1"
ServerName testpage.com/website_1
##ServerAlias www.recruitement.localhost
##ErrorLog "logs/dummy-host2.localhost-error.log"
##CustomLog "logs/dummy-host2.localhost-access.log" combined
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
Howerver Im将我的网站托管给托管公司justhost.com,他们不允许我修改httpd-vhosts.conf或httpd.conf.现在我的整个网站都经过编码,以便website_1下的文件引用website_1下的其他文件,使用简单的斜杠"/"表示website_1被视为文档根目录.这在本地机器上运行得很好但是当上传到主机时它给我服务器错误,因为它无法找到文件,因为它试图在public_html中找到这些文件
例如:
public_html
- website_1
- script.php
- style.css
Run Code Online (Sandbox Code Playgroud)
在我的script.php里面:
<a href="/style.css">See My Style</a>
Run Code Online (Sandbox Code Playgroud)
这在本地机器上运行良好,但在主机上它失败,因为它试图在public_html下找到style.css 而不是public_html/website_1
有没有办法在不使用VHost的情况下拥有多个文档根?喜欢使用.htaccess或其他东西.我想尽量避免重写代码,因为它大约有10万行代码.
所以我试图用名字设置我的应用程序,而不是使用127 0 0 1.每次我运行grunt,我的地址是http://127.0.0.1:9000/#/......我尝试了很多东西,没有任何工作...我总是被重定向到那个地方.
这是我的文件:
httpd.conf文件
<VirtualHost *:80>
DocumentRoot "/Users/myusername/Sites/MyApp/app"
ServerName myapp.dev
<Directory "/Users/myusername/Sites/MyApp/app">
Options FollowSymLinks MultiViews Indexes
AllowOverride All
Order allow,deny
Deny from none
Allow from all
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
主机
127.0.0.1 myapp.dev
::1 myapp.dev
Run Code Online (Sandbox Code Playgroud)
Gruntfile.js
// Generated on 2013-11-08 using generator-angular 0.5.1
'use strict';
// # Globbing
// for performance reasons we're only matching one level down:
// 'test/spec/{,*/}*.js'
// use this if you want to recursively match all subfolders:
// 'test/spec/**/*.js'
module.exports = function (grunt) { …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 Linux/Ubuntu 中创建本地环境。
我已经安装了 Apache 2.4.7(使用 apt-get)。
我已将 /etc/hosts 更改为:
127.0.0.1 example.dev
127.0.0.1 localhost
...
Run Code Online (Sandbox Code Playgroud)
我还在“/etc/apache2/sites-available”中添加了一个文件“example.dev.conf”,如下所示:
<VirtualHost *:80>
ServerName example.dev
DocumentRoot "/home/yahya/path/to/projec"
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory "/home/yahya/path/to/project">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Run Code Online (Sandbox Code Playgroud)
但是当我转到 example.dev 时,我收到以下消息:
第403章 禁止!您没有权限访问此服务器上的 /。
我还根据<Directory />此链接的建议编辑了 apache.conf 部分:禁止您无权访问此服务器上的 /和错误消息“禁止您无权访问此服务器上的 /”
从:
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
Run Code Online (Sandbox Code Playgroud)
到
<Directory />
Options Indexes FollowSymLinks Includes ExecCGI …Run Code Online (Sandbox Code Playgroud) 我能得到的最接近的是客户端下载它们.它将下载正确的ejs文件.
它让我发疯,因为我觉得它应该有效,但事实并非如此.如果我把html文件放在那里他们服务就好了.这有点乱,因为我一直在尝试各种各样的事情.
var application_root = __dirname;
var express = require('express');
var vhost = require( 'vhost' );
var https = require('https');
var http = require('http');
var fs = require('fs');
var path = require("path");
var forceSSL = require('express-force-ssl');
//do something
var app = express();
var credentials = {};
var config = require('./config.json')[process.env.NODE_ENV || 'dev'];
//Use ejs?
app.set('view engine', 'ejs');
app.engine('html', require('ejs').renderFile);
//Ensure all are going to www.
app.all(/.*/, function(req, res, next) {
var host = req.header("host");
if (host.match(/^www\..*/i)) {
next();
} else …Run Code Online (Sandbox Code Playgroud) 我整个晚上一直在打击我的头,看不出我出错的地方.我想在xampp上设置一个主机mysite.local并遵循所有说明,但我一直被重定向到mysite.local/xampp.
我在这里出错的任何想法?路径是正确的,我重新启动了Apache :)
我编辑了我的hosts文件来添加:
127.0.0.1 mysite.local
Run Code Online (Sandbox Code Playgroud)
我编辑了extra/httpd-vhosts.conf:
NameVirtualHost localhost:80
<VirtualHost localhost:80>
ServerName localhost
DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs"
<Directory "/Applications/XAMPP/xamppfiles/htdocs">
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order Deny,Allow
Allow from all
</Directory>
</VirtualHost>
<VirtualHost localhost:80>
<Directory "/Applications/XAMPP/xamppfiles/htdocs/wd">
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order Deny,Allow
Allow from all
</Directory>
DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/wd"
ServerName mysite.local
</VirtualHost>
Run Code Online (Sandbox Code Playgroud) 我正在尝试根据用于连接到我的服务器的 url 动态读取 SSL 证书的位置。我尝试了几种不同的方法,但似乎都不起作用。目前我的配置如下所示
UseCanonicalName Off
listen 443
<VirtualHost *:443>
ServerName example
ServerAlias *
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/%0/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/%0/privkey.pem
VirtualDocumentRoot /var/www/vhosts/%-2/%-3+/public
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
这里的问题是,当我启动 apache 时,出现错误,提示找不到 ssl 证书的文件位置,该证书声明“/etc/letsencrypt/live/%0/cert.pem”
所以看起来 %0 没有被 url 替换。
编辑:当我手动仅用 url 替换 %0 时,则表示 url 具有有效的 SSL
我有一个 Symfony 网站,在那里我重命名了主要入口点,因此“index.php”无法访问,也无法被搜索引擎编入索引。它运作良好。但是,当我尝试访问这个文件时,我发现一个 404 文件没有找到,这个 404 页面是由 Apache 而不是由应用程序处理的,它是标准的 404 页面:
Not Found
The requested URL was not found on this server.
Run Code Online (Sandbox Code Playgroud)
我希望Symfony 应用程序处理像/index.php(实际上是 *.php)这样的 URL,以显示具有良好布局的自定义错误页面。我的虚拟主机看起来像这样,我尝试添加“目录索引”指令但没有成功。
# configuration/vhosts/prod/mywebsite.com-le-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName www.mywebsite.com
DocumentRoot /var/www-protected/mywebsite.com/public
<Directory /var/www-protected/mywebsite.com/public>
AllowOverride All
Require all granted
FallbackResource /my-secret-entry-point.php
</Directory>
RedirectMatch 404 /\.git
ErrorLog /var/log/apache2/mywebsite.com_error.log
CustomLog /var/log/apache2/mywebsite.com_access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =mywebsite.com
RewriteRule ^ https://www.%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
SSLCertificateFile /etc/letsencrypt/live/www.mywebsite.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.mywebsite.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
Run Code Online (Sandbox Code Playgroud)