1. Die Grundfunktion von .htaccess
.htaccess ist eine reine Textdatei, die Anweisungen zur Apache-Serverkonfiguration speichert.
Die Hauptfunktionen von .htaccess sind: URL-Umschreiben, benutzerdefinierte Fehlerseiten, MIME-Typkonfiguration und Zugriffskontrolle usw. Dies spiegelt sich hauptsächlich in pseudostatischen Anwendungen, Bild-Hotlink-Schutz, benutzerdefinierten 404-Fehlerseiten, Blockieren/Zulassen bestimmter IPs/IP-Segmente, Durchsuchen von Verzeichnissen und Homepages, Verhindern des Zugriffs auf bestimmte Dateitypen, Dateikennwortschutz usw. wider.
Der Anwendungsbereich von .htaccess bezieht sich hauptsächlich auf das aktuelle Verzeichnis.
2. .htaccess-Konfiguration aktivieren
Um .htaccess zu aktivieren, müssen Sie httpd.conf ändern, AllowOverride aktivieren und AllowOverride verwenden, um die Verwendung bestimmter Befehle einzuschränken.
Nachdem Sie die Datei httpd.conf mit einem Texteditor geöffnet haben, suchen Sie nach
und kopieren Sie den Code wie folgt:
<Directory /> Options FollowSymLinks AllowOverride None </Directory> 改为: <Directory /> Options FollowSymLinks AllowOverride All </Directory>
Wenn Sie einen Dateinamen verwenden müssen außer .htaccess. Dies kann mit dem Befehl AccessFileName geändert werden. Wenn Sie beispielsweise .config verwenden müssen, können Sie es in der Serverkonfigurationsdatei wie folgt konfigurieren:
Kopieren Sie den Code wie folgt:
AccessFileName .config
3. .htaccess-Zugriffskontrolle
1. Grundlagen der Zugriffskontrolle: Bestellbefehl
Um den Zugriff von Benutzern auf einige Schlüsselverzeichnisse einzuschränken, werden normalerweise .htaccess-Dateien hinzugefügt wie folgt:
Kopieren Sie den Code wie folgt:
<Files ~ "^.*\.([Ll][Oo][Gg])|([eE][xX][eE])"> Order allow,deny Deny from all </Files>
Erklärung:
(1) Die Wellenlinie nach Dateien zeigt an, dass „regulär Ausdrücke“ sind aktiviert. Die einfache Schreibmethode ist: (2) Befehl „Bestellen“: Über die Parameter „Zulassen“ und „Verweigern“ findet und wendet Apache zunächst den Befehl „Zulassen“ an und wendet dann den Befehl „Verweigern“ an, um den gesamten Zugriff zu blockieren. 4. URL-Umschreibung Das Folgende ist ein einfaches Beispiel für URL-Umschreibungsregeln: Kopieren Sie den Code wie folgt: 5. Konfigurationsfehlerseite Die grundlegende Syntax lautet wie folgt: Kopieren Sie den Code wie folgt: 6. Allgemeine htaccess-Befehle und Konfigurationstipps Kopieren Sie die Code wie folgt: Optionen -Indizes Kopieren Sie den Code wie folgt: ab 000.000.000.000 verweigern Kopieren Sie den Code wie folgt: erlauben ab 000.000.000.000 Kopieren Sie den Code wie folgt: Von allen ablehnen Kopieren Sie den Code wie folgt: DirectoryIndex index.php index.php3 messagebrd.pl index.html index.htm 复制代码代码如下: 复制代码代码如下: /oldfile.html /old/oldfile.html 复制代码代码如下: http: ///olddirecotry/oldfiles/images/image.gif http: ///newdirectory/oldfiles/images/image.gif 七、安全配置 复制代码代码如下: 复制代码代码如下: 4.禁止脚本执行,加强你的目录安全 复制代码代码如下: 复制代码代码如下: 复制代码代码如下: 复制代码代码如下: 复制代码代码如下: 复制代码代码如下: 复制代码代码如下: 复制代码代码如下:
# Will RewriteEngine-Modus ist aktiviert
RewriteEngine On
# Die Rewrite-Systemregeln nicht ändern
RewriteRule ^p/([0-9] ).html$ index.php?post_id=$1
RewriteRule ^u -( username|uid)-(. ).html$ space.php?$1=$2
Unter diesen bedeutet RewriteEngine das Einschalten des URL-Umschreibens und RewriteRule ist die Umschreiberegel. # custom error documents
ErrorDocument 401 /err/401.php
ErrorDocument 403 /err/403.php
ErrorDocument 404 /err/404.php
ErrorDocument 500 /err/500.php
1. Anzeige der Verzeichnisliste deaktivieren
Manchmal gibt es aus irgendeinem Grund keine Indexdatei in Ihrem Verzeichnis, was bedeutet, dass, wenn jemand etwas eingibt die Adressleiste des Browsers Wenn Sie den Pfad zum Verzeichnis angeben, werden alle Dateien im Verzeichnis angezeigt, was Sicherheitsrisiken für Ihre Website birgt.
Um dies zu vermeiden (ohne eine Menge neuer Indexdateien erstellen zu müssen), können Sie verhindern, dass die Verzeichnisliste
angezeigt wird, indem Sie den folgenden Befehl in Ihr .htaccess-Dokument eingeben:
2. Bestimmte IP-Adressen blockieren/zulassen
In manchen Fällen möchten Sie möglicherweise nur bestimmte IPs zulassen, die Benutzer möglicherweise können auf Ihre Website zugreifen (z. B. nur Benutzern mit einem bestimmten ISP den Zugriff auf ein Verzeichnis gestatten), oder sie möchten möglicherweise bestimmte IP-Adressen blockieren (z. B. um Benutzer mit niedrigem Zugriffsniveau von Ihrer Informationsseite zu isolieren). Dies funktioniert natürlich nur, wenn Sie die IP-Adresse kennen, die Sie blockieren möchten. Allerdings verwenden die meisten Online-Benutzer heutzutage dynamische IP-Adressen, sodass dies keine gängige Methode zur Nutzungsbeschränkung ist.
Sie können den folgenden Befehl verwenden, um eine IP-Adresse zu sperren:
Die 000.000. 000.000 ist hier: Wenn Sie bei blockierten IP-Adressen nur einige davon angeben, können Sie die Adressen des gesamten Netzwerksegments blockieren. Wenn Sie 210.10.56. eingeben, werden alle IP-Adressen von 210.10.56.0 bis 210.10.56.255 blockiert.
Sie können den folgenden Befehl verwenden, um einer IP-Adresse den Zugriff auf die Website zu erlauben:
erlaubte IP Die Adresse ist 000.000.000.000. Sie können das gesamte Netzwerksegment zulassen, genau wie das Verbot der IP-Adresse.
Wenn Sie verhindern möchten, dass jeder auf das Verzeichnis zugreift, können Sie Folgendes verwenden:
Aber das hier Hat keinen Einfluss darauf, dass Skripte Dokumente in diesem Verzeichnis verwenden.
3. Ersetzen Sie die Indexdatei
Vielleicht möchten Sie nicht immer index.htm oder index.html als Indexdatei des Verzeichnisses verwenden. Wenn Ihre Website beispielsweise PHP-Dateien verwendet, möchten Sie möglicherweise diese verwenden
index.php dient als Indexdokument für dieses Verzeichnis. Natürlich müssen Sie sich nicht auf das „Index“-Dokument beschränken, wenn Sie möchten, können Sie es sogar mithilfe von .htaccess festlegen
foofoo.balh als Ihr Indexdokument!
Diese sich gegenseitig ersetzenden Indexdateien können in einer Liste angeordnet werden, und der Server sucht von links nach rechts, um zu prüfen, welches Dokument im realen Verzeichnis vorhanden ist. Wenn keine gefunden werden, wird die Verzeichnisliste angezeigt (es sei denn, Sie haben die Anzeige der Verzeichnisdateilisten deaktiviert).
4.重定向(rewrite)
.htaccess
最有用的功能之一就是将请求重定向到同站内或站外的不同文档。这在你改变了一个文件名称,但仍然想让用户用旧地址访问到它时,变的极为有用。另一个应用(我发现的很有用的)是重定向到一个长URL,例如在我的时事通讯中,我可以使用一个很简短的URL来指向我的会员链接。以下是一个重定向文件的例子:Redirect /location/from/root/file.ext http: ///new/file/location.xyz
上述例子中,访问在root目录下的名为oldfile.html可以键入:
访问一个旧次级目录中的文件可以键入:
你也可以使用.htaccess重定向整个网站的目录。假如你的网站上有一个名为olddirectory的目录,并且你已经在一个新网站http: ///newdirectory/上建立了与上相同的文档,你可以将旧目录下所有的文件做一次重定向而不必一一声明:Redirect /olddirectory http: ///newdirectory
这样,任何指向到站点中/olddirectory目录的请求都将被重新指向新的站点,包括附加的额外URL信息。例如有人键入:
请求将被重定向到:
如果正确使用,此功能将极其强大。
下面的htaccess代码能够提高你的web服务器的安全水平。图片链接盗用保护非常有用,它能防止其他人偷盗使用你的服务器上的图片资源。
1. 通过.htaccess放盗链
痛恨那些偷盗链接你的web服务器上的图片资源而耗尽了你的带宽的行为吗?试试这个,你可以防止这种事情的发生。RewriteBase /
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?php.cn/.*$ [NC]
RewriteRule .(gif|jpg|swf|flv|png)$ /feed/ [R=302,L]
2. 防黑客
如果你想提高网站的安全等级,你可以去掉下面的几行代码,这样可以防止一些常见恶意URL匹配的黑客攻击技术。RewriteEngine On
# proc/self/environ? 没门!
RewriteCond %{QUERY_STRING} proc/self/environ [OR]
# 阻止脚本企图通过URL修改mosConfig值
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [OR]
# 阻止脚本通过URL传递的base64_encode垃圾信息
RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]
# 阻止在URL含有<script>标记的脚本
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
# 阻止企图通过URL设置PHP的GLOBALS变量的脚本
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
# 阻止企图通过URL设置PHP的_REQUEST变量的脚本
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})
# 把所有被阻止的请求转向到403禁止提示页面!
RewriteRule ^(.*)$ index.php [F,L]
3. 阻止访问你的 .htaccess 文件或者指定类型的文件
下面的代码可以阻止别人访问你的.htaccess文件。同样,你也可以设定阻止多种文件类型。# 保护你的 htaccess 文件
<Files .htaccess>
order allow,deny
deny from all
</Files>
# 阻止查看指定的文件
<Files secretfile.jpg>
order allow,deny
deny from all
</Files>
# 多种文件类型
<FilesMatch “.(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$”>
Order Allow,Deny
Deny from all
</FilesMatch>[/code]
# 禁止某些目录里的脚本执行权限
AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi
Options -ExecCGI
八、一些常用的设置
1.时区设置
有些时候,当你在PHP里使用date或mktime函数时,由于时区的不同,它会显示出一些很奇怪的信息。下面是解决这个问题的方法之一。就是设置你的服务器的时区。你可以在这里找到所有支持的时区的清单。
1.SetEnv TZ Australia/Melbourne
2. seo/seo.html" target="_blank">搜索引擎友好的301永久转向方法
为什么这是搜索引擎友好的呢?因为现在很多现代的搜索引擎都有能根据检查301永久转向来更新它现有的记录的功能。Redirect 301 http: //www.php.cn/article/index http: //www.php.cn/article/
3. 屏蔽下载对话框
通常,当你下载东西的时候,你会看到一个对话框询问你是保持这个文件还是直接打开它。如果你不想看到这个东西,你可以把下面的一段代码放到你的.htaccess文件里。AddType application/octet-stream .pdf
AddType application/octet-stream .zip
AddType application/octet-stream .mov
4. 省去www前缀
SEO的一个原则是,确保你的网站只有一个URL。因此,你需要把所有的通过www的访问转向的非www,或者反这来。RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.php.cn [NC]
RewriteRule ^(.*)$ http: //www.php.cn/$1 [L,R=301]
5. 个性化Error页面
对每个错误代码定制自己个性化的错误页面。ErrorDocument 401 /error/401.php
ErrorDocument 403 /error/403.php
ErrorDocument 404 /error/404.php
ErrorDocument 500 /error/500.php
6. 压缩文件
通过压缩你的文件体积来优化网站的访问速度。# 压缩 text, html, javascript, css, xml:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
.AddOutputFilterByType DEFLATE application/x-javascript
7. 缓存文件
缓存文件是另外一个提高你的网站访问速度的好方法。<FilesMatch “.(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$”>
Header set Cache-Control “max-age=2592000″
</FilesMatch>
8. 对某些文件类型禁止使用缓存
而另一方面,你也可以定制对某些文件类型禁止使用缓存。# 显式的规定对脚本和其它动态文件禁止使用缓存
<FilesMatch “.(pl|php|cgi|spl|scgi|fcgi)$”>
Header unset Cache-Control
</FilesMatch>