PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mod_rewrite on Nginx


Lex
04.10.2013, 21:02
Hey alle,

Ich suche im Moment eine gute Anleitung oder jemanden der mir durch diesen Task hilft. Ich habe leider mit RegEx nicht wirklich erfahrung
doch bei Apache gab es immerhin bessere Tut´s dafür. Bei Nginx stoße ich da leider auf sehr viel weniger Informationen und benötige daher
etwas Hilfe.

Ich möchte nichts großartiges, lediglich eine Rewrite wie folgt.


Request URL = http://example.com/this-is-an-page-name

soll weitergeleitet werden an http://example.com/index.php?site=this-is-an-page-name

fürs erste würde das vollkommen reichen.

Lg Lex

orti1980
04.10.2013, 21:20
hier hast du einpaar beispiele



#<IfModule mod_security.c>
# secfilterengine off
# secfilterscanPOST off
#</IfModule>

Options All -Indexes
FileETag MTime Size
Options +FollowSymlinks
RewriteEngine on

<FilesMatch "\.(db|inc|tmpl|h|ihtml|sql|ini|configuration|config|class|bin|spd|theme|module|cfg|cpl|tmp|log|err|inc.php|class.php)$">
order allow,deny
satisfy all
</FilesMatch>

########## Begin - Rewrite rules to block out some common exploits
#
# Block out any script trying to set a mosConfig value through the URL
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
# Block out any script trying to base64_encode crap to send via URL
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
# Block out any script that includes a <script> tag in URL
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Send all blocked request to homepage with 403 Forbidden error!
#RewriteRule ^(.*)$ index.php [L]
RewriteRule ^([^.]*)/?$ index.php [L]
#
########## End - Rewrite rules to block out some common exploits


RewriteEngine on
#
#
#
#URL Rewriting for Videos
RewriteRule ^videos/(.*)/(.*)/(.*)/(.*)/(.*) videos.php?cat=$1&sort=$3&time=$4&page=$5&seo_cat_name=$2 [L]
RewriteRule ^videos/([0-9]+) videos.php?page=$1 [L]
RewriteRule ^videos/?$ videos.php?%{QUERY_STRING} [L]
RewriteRule ^video/(.*)/(.*) watch_video.php?v=$1&%{QUERY_STRING} [L]
#Alternate watch video links
RewriteRule ^(.*)\_v([0-9]+) watch_video.php?v=$2&%{QUERY_STRING} [L]
RewriteRule ^video/([0-9]+)_(.*) watch_video.php?v=$1&%{QUERY_STRING} [L]


#
#Users, Channel & Management
#

RewriteRule ^channels/(.*)/(.*)/(.*)/(.*)/(.*) channels.php?cat=$1&sort=$3&time=$4&page=$5&seo_cat_name=$2 [L]
RewriteRule ^channels/([0-9]+) channels.php?page=$1 [L]
RewriteRule ^channels/?$ channels.php [L]
RewriteRule ^members/?$ channels.php [nc]
RewriteRule ^users/?$ channels.php [nc]
RewriteRule ^user/(.*) view_channel.php?user=$1 [nc]
RewriteRule ^channel/(.*) view_channel.php?user=$1 [nc]


RewriteRule ^my_account myaccount.php [nc]



#Pages
RewriteRule ^page/([0-9]+)/(.*) view_page.php?pid=$1 [nc]
#
#Miscellenous
RewriteRule ^search/result/?$ search_result.php [nc]
RewriteRule ^upload/?$ upload.php [nc]
RewriteRule ^contact/?$ contact.php [nc]
RewriteRule ^categories/?$ categories.php [nc]

#Group Section

RewriteRule ^group/([a-zA-Z0-9].+) view_group.php?url=$1&%{QUERY_STRING} [L]

RewriteRule ^view_topic/([a-zA-Z0-9].+)_tid_([0-9]+) view_topic.php?tid=$2&%{QUERY_STRING} [L]
RewriteRule ^groups/(.*)/(.*)/(.*)/(.*)/(.*) groups.php?cat=$1&sort=$3&time=$4&page=$5&seo_cat_name=$2 [L]
RewriteRule ^groups/([0-9]+) groups.php?page=$1 [L]
RewriteRule ^groups/?$ groups.php [L]
RewriteRule ^create_group create_group.php [L]

#Collection Section
RewriteRule ^collections/(.*)/(.*)/(.*)/(.*)/(.*) collections.php?cat=$1&sort=$3&time=$4&page=$5&seo_cat_name=$2 [L]
RewriteRule ^collections/([0-9]+) collections.php?page=$1 [L]
RewriteRule ^collections/?$ collections.php [L]
RewriteRule ^photos/(.*)/(.*)/(.*)/(.*)/(.*) photos.php?cat=$1&sort=$3&time=$4&page=$5&seo_cat_name=$2 [L]
RewriteRule ^photos/([0-9]+) photos.php?page=$1 [L]
RewriteRule ^photos/?$ photos.php [L]
RewriteRule ^collection/(.*)/(.*)/(.*) view_collection.php?cid=$1&type=$2&%{QUERY_STRING} [L]

#Photo Section
RewriteRule ^item/(.*)/(.*)/(.*)/(.*) view_item.php?item=$3&type=$1&collection=$2 [L]
RewriteRule ^photo_upload/(.*) photo_upload.php?collection=$1 [L]
RewriteRule ^photo_upload/?$ photo_upload.php [L]
#
RewriteRule ^sitemap.xml$ sitemap.php
RewriteRule ^signup/?$ signup.php

#Error Pages
ErrorDocument 404 /404.php
ErrorDocument 403 /403.php

########## End - Rewrite rules For SEO urls ######################
RewriteRule ^rss$ rss.php [nc]
RewriteRule ^rss/([a-zA-Z0-9].+)$ rss.php?mode=$1&%{QUERY_STRING} [nc]

########## End - Rewrite rules For SEO urls ######################

RewriteRule ^([a-zA-Z0-9-]+)/?$ view_channel.php?uid=$1&seo_diret=yes [NS]

ike
04.10.2013, 22:09
hier hast du einpaar beispiele

Das ist für Apache


Versuch mal sowas:

rewrite "/([\w-]*)$" /index.php?site=$1 last;

Lex
04.10.2013, 22:30
Hi Orti1980,

Vielen Dank, auch wenn es scheinbar nicht für Nginx gedacht ist.

@Ike, Danke, ich werde das so schnell als möglich testen :)

Lg Lex

Flori12345
05.10.2013, 08:32
oder so vieleicht weiß net ob dir das hilft

RewriteEngine On
RewriteCond %{HTTP_HOST} ^google.de$ [NC]
RewriteRule ^(.*)$ http://www.google.de [R=301,L]

Miata3de
05.10.2013, 10:06
Hab selber leider keine Erfahrung mit nginx, da ich den lighttpd nutze..
Aber ich habe hier mal nen link, vielleicht hilft dir das.
HttpRewriteModule (http://wiki.nginx.org/HttpRewriteModule)

LG
Miata3de

tantetoni2
05.10.2013, 11:26
lex einfach mal hier schauen

HttpRewriteModule (http://wiki.nginx.org/HttpRewriteModule)
Converting rewrite rules (http://nginx.org/en/docs/http/converting_rewrite_rules.html)

Lex
05.10.2013, 11:39
Hi,

Ja die 2 Links hatte ich mit Google auch gefunden, doch wie gesagt, mit RegEx hab ichs nicht so, und es sind leider keine Beispiele für meinen Fall vorhanden die ich anpassen könnte.
Ich hoffe ich komme heute dazu die gepostete Möglichkeit von IKE zu testen, und hoffe mal es klappt alles :)

Lg Lex

Chaosman
05.10.2013, 11:43
Villeicht sowas?

RewriteEngine on
#
# die Datei liegt im Verzeichnis /abc/def
# erreichbar ist dieses Verzeichnis aber über /xyz
# bspw. weil in der httpd.conf folgendes gesetzt wurde:
# Alias /xyz /abc/def
#
RewriteBase /xyz RewriteRule ^(.*)\.htm$ $1.html # macht alle *.html auch als *.htm erreichbar

RewriteEngine on
RewriteRule (.*)\.html$ /cgi-bin/script.pl?var=$1Standard-Domain definieren:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.domain\.com$
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]

schau mal hier
Mod_Rewrite (http://suchmaschinentricks.at/tipps-tricks/mod_rewrite.html)

tantetoni2
05.10.2013, 12:08
ich weiss nicht ob das irgendjemand checkt, aber es geht um nginx und nicht um apache wenn ich das richtig gelesen hab

Lex
05.10.2013, 12:29
Jo, geht um Nginx, bei Apache gibts genug Anleitungen.

Lg Lex

orti1980
05.10.2013, 13:43
Teste das

rewrite ^/site$ /index.php?site=$1 last;

oder

rewrite ^(.*)$ /index.php?site=$1 last;

</div>