ورود

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : کمک برای نوشتن یک خط دستور htaccess



iroo
January 17th, 2017, 09:58
سلام و خسته نباشید

من نیاز به یک راهنمائی دارم

فرض کنیم آدرس من بدین صورت هست

https://exp.com/Product/DKP-147243/TP-LINK-Neffos-C5-Dual-SIM-Mobile-Phone/%DA%AF%D9%88%D8%B4%D9%8A-%D9%85%D9%88%D8%A8%D8%A7%D9%8A%D9%84-%D8%AA%D9%8A-%D9%BE%D9%8A-%D9%84%D9%8A%D9%86%DA%A9-%D9%85%D8%AF%D9%84-Neffos-C5-%D8%AF%D9%88-%D8%B3%D9%8A%D9%85%E2%80%8C%DA%A9%D8%A7%D8%B1%D8%A A

حالا یا هر آدرس دیگه ای
من میخوام به جز آدرس سایتم بقیه آدرس گذاشته بشه توی یک متغییر و ارجاع داده بشه به یک فایل

مثلا:
https://exp.com/Product/DKP-147243/TP-LINK-Neffos-C5
وقتی کاربر میاد به این آدرس بره فایل ABC.php رو باز کنه و مقدار (قرمز و بولد شده) رو بذاره توی متغییر H


ممنون میشم راهنمائیم بکنید

dow
January 17th, 2017, 10:08
سلام
بررسی کنید :


RewriteEngine On
RewriteRule ^/([^/]*)$ /ABC.php?h=$1 [L]

iroo
January 17th, 2017, 10:22
سلام
بررسی کنید :


RewriteEngine On
RewriteRule ^/([^/]*)$ /ABC.php?h=$1 [L]


نه داداش کار نکرد

من تو فایل abc.php مقدای h رو به روش زیر میگیرم
$t=POST_GET['h'];

اصلا فک کنم به فایل abc وصل نشده، چون Echo هم زده بودم مقدار دریافتی رو نشون بده، خطای 404 میده

AtrafNet
January 17th, 2017, 10:28
نه داداش کار نکرد

من تو فایل abc.php مقدای h رو به روش زیر میگیرم
$t=POST_GET['h'];

اصلا فک کنم به فایل abc وصل نشده، چون Echo هم زده بودم مقدار دریافتی رو نشون بده، خطای 404 میده

جسارتاً POST_GET ندارید یا POST باید باشه یا GET.
شما باید اینطوری اطلاعات رو بگیری:



$t = $_GET['h'];

iroo
January 17th, 2017, 10:34
جسارتاً POST_GET ندارید یا POST باید باشه یا GET.
شما باید اینطوری اطلاعات رو بگیری:



$t = $_GET['h'];


سلام
اره اره، اول صبحی گیج میزنم
درستش کردم

خطای 404 میده

AtrafNet
January 17th, 2017, 12:15
سلام
اره اره، اول صبحی گیج میزنم
درستش کردم

خطای 404 میده

من راه با htaccess. رو بلد نیستم اما یه راه ساده با خود php هستش که اونم گرفتن آدرس Request و جدا کردن متن بعد از هر اسلش ( / ) در یه array هستش اینطوری:



<?php
$url = explode('/', $_SERVER['REQUEST_URI']);
print_r($url);


الان خروجی دستور بالا برای شما باید یه چیزی مثل این باشه:



Array ( [0] => [1] => Product [2] => DKP-147243 [3] => TP-LINK-Neffos-C5 )


که همونطور که می بینید بر اساس یه عدد میشه به هر متن داخل URL دسترسی داشت مثلاً برای فهمیدن نام محصول می تونیم از کد زیر استفاده کنیم:



echo $url[3];


اما خب این روش شاید در موارد کوچک به کار بیاد ولی در موارد بزرگتر یکم غیر استاندارد به نظر میاد :d

توابع استفاده شده یکی explode برای تقسیم یک رشته بر اساس کاراکتری خاص به یک آرایه هست: http://php.net/manual/en/function.explode.php
یکی هم متغیر سراسری SERVER که اطلاعات خیلی بیشتری به جز همین REQUEST_URI میشه ازش گرفت که تو این لینک نوشته: http://php.net/manual/en/reserved.variables.server.php

iroo
January 17th, 2017, 12:18
من راه با htaccess. رو بلد نیستم اما یه راه ساده با خود php هستش که اونم گرفتن آدرس Request و جدا کردن متن بعد از هر اسلش ( / ) در یه array هستش اینطوری:



<?php
$url = explode('/', $_SERVER['REQUEST_URI']);
print_r($url);


الان خروجی دستور بالا برای شما باید یه چیزی مثل این باشه:



Array ( [0] => [1] => Product [2] => DKP-147243 [3] => TP-LINK-Neffos-C5 )


که همونطور که می بینید بر اساس یه عدد میشه به هر متن داخل URL دسترسی داشت مثلاً برای فهمیدن نام محصول می تونیم از کد زیر استفاده کنیم:



echo $url[3];


اما خب این روش شاید در موارد کوچک به کار بیاد ولی در موارد بزرگتر یکم غیر استاندارد به نظر میاد :d

توابع استفاده شده یکی explode برای تقسیم یک رشته بر اساس کاراکتری خاص به یک آرایه هست: http://php.net/manual/en/function.explode.php
یکی هم متغیر سراسری SERVER که اطلاعات خیلی بیشتری به جز همین REQUEST_URI میشه ازش گرفت که تو این لینک نوشته: http://php.net/manual/en/reserved.variables.server.php


سلام
والله آدرس های من اصلا ساختار منظم و مرتبی ندارن و از طرفی هم ثابت نیستند شاید 100 مدل آدرس دهی باشه

تنها کاری که میخوام بکنم اینه که یوزر هر آدرسی که دلش میخواد بده، هر آدرسی.... مثلا
exp.com/asdasd
exp.com/sdfsa/asdaws/afwew/34545
exp.com/1240*-/w454
exp.com/فارسی

حالا کاری که من میخوام این هست، آدرس یوزر رو بگیره (البته به جز اسم دامنه) بعدش بذاره توی یه متغییر
حالا ما باید توی htaccess اینو پیاده کنیم

ولی بلد نیستم

AtrafNet
January 17th, 2017, 12:29
سلام
والله آدرس های من اصلا ساختار منظم و مرتبی ندارن و از طرفی هم ثابت نیستند شاید 100 مدل آدرس دهی باشه

تنها کاری که میخوام بکنم اینه که یوزر هر آدرسی که دلش میخواد بده، هر آدرسی.... مثلا
exp.com/asdasd
exp.com/sdfsa/asdaws/afwew/34545
exp.com/1240*-/w454
exp.com/فارسی

حالا کاری که من میخوام این هست، آدرس یوزر رو بگیره (البته به جز اسم دامنه) بعدش بذاره توی یه متغییر
حالا ما باید توی htaccess اینو پیاده کنیم

ولی بلد نیستم

ببینید اگه فقط مشکل گرفتن هر آدرس مختلفی هست که با همین روشی که گفتم میشه فقط یادم رفت بگم همین روشی که گفتم هم نیاز به کد htaccess. شبیه کد htaccess. وردپرس داره که تمامی Request ها رو به فایل php شما بده و شما پردازش کنی و بر اساس اون URL محتوا رو نشون بدی کاری که وردپرس دقیق انجام میده و تمامی Request ها رو به فایل index.php میده.

وردپرس برای این کار از این کد در فایل htaccess. استفاده میکنه که من خودم به شخصه همینو تو خیلی از پروژه های شخصی خودم هم کپی کردم و براحتی کار کرده :d



<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>


اینو وقتی تو فایل htaccess. بذارید دیگه هر چی کاربر تو آدرس بنویسه میره به همون فایلی که در خط یکی مونده به آخر این کد اشاره شده اما این کد URL رو در یه Query String قرار نمیده که بتونید بر اساس متد GET بگیریدشون به همین دلیل باید با روشی که بالا گفتم یعنی تابع explode و آیتم REQUEST_URI داخل آرایه سراسری SERVER آدرسی که کاربر بعد از دامنه شما نوشته رو پیدا کنید.البته اگر این آدرس رو کامل و بدون نیاز به تقسیم بر اساس هر اسلش داشته باشید می تونید براحتی تابع explode رو حذف کنید و فقط از آیتم REQUEST_URI داخل آرایه SERVER استفاده کنید.

iroo
January 17th, 2017, 12:36
ببینید اگه فقط مشکل گرفتن هر آدرس مختلفی هست که با همین روشی که گفتم میشه فقط یادم رفت بگم همین روشی که گفتم هم نیاز به کد htaccess. شبیه کد htaccess. وردپرس داره که تمامی Request ها رو به فایل php شما بده و شما پردازش کنی و بر اساس اون URL محتوا رو نشون بدی کاری که وردپرس دقیق انجام میده و تمامی Request ها رو به فایل index.php میده.

وردپرس برای این کار از این کد در فایل htaccess. استفاده میکنه که من خودم به شخصه همینو تو خیلی از پروژه های شخصی خودم هم کپی کردم و براحتی کار کرده :d



<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>


اینو وقتی تو فایل htaccess. بذارید دیگه هر چی کاربر تو آدرس بنویسه میره به همون فایلی که در خط یکی مونده به آخر این کد اشاره شده اما این کد URL رو در یه Query String قرار نمیده که بتونید بر اساس متد GET بگیریدشون به همین دلیل باید با روشی که بالا گفتم یعنی تابع explode و آیتم REQUEST_URI داخل آرایه سراسری SERVER آدرسی که کاربر بعد از دامنه شما نوشته رو پیدا کنید.البته اگر این آدرس رو کامل و بدون نیاز به تقسیم بر اساس هر اسلش داشته باشید می تونید براحتی تابع explode رو حذف کنید و فقط از آیتم REQUEST_URI داخل آرایه SERVER استفاده کنید.


جالبه
بازم خطای 404 میده

فایل htaccess همونی هست که شما گفتی فقط فایل ایندکس رو زدم abc
توفایل abc.php هم این دستور رو نوشتم
echo $_SERVER['REQUEST_URI'];

- - - Updated - - -

میشه شما یه نمونه فایل بدین ؟

AtrafNet
January 17th, 2017, 12:49
جالبه
بازم خطای 404 میده

فایل htaccess همونی هست که شما گفتی فقط فایل ایندکس رو زدم abc
توفایل abc.php هم این دستور رو نوشتم
echo $_SERVER['REQUEST_URI'];

- - - Updated - - -

میشه شما یه نمونه فایل بدین ؟


وب سرور هاست شما چیه؟ میگم اگه NginX باشه کار نمیکنه.
بعدش باید mod_rewrite هم روی آپاچی فعال باشه البته LiteSpeed هم سازگاره.

این مورد رو من بار ها تست کردم و مشکلی نبوده و مثال خاصی هم نیاز نداره همینی که شما انجام دادید هم باید کار کنه فقط فایل htaccess. باید دقیق کنار فایل php مورد نظر باشه تا کار کنه.

iroo
January 17th, 2017, 12:53
وب سرور هاست شما چیه؟ میگم اگه NginX باشه کار نمیکنه.
بعدش باید mod_rewrite هم روی آپاچی فعال باشه البته LiteSpeed هم سازگاره.

این مورد رو من بار ها تست کردم و مشکلی نبوده و مثال خاصی هم نیاز نداره همینی که شما انجام دادید هم باید کار کنه فقط فایل htaccess. باید دقیق کنار فایل php مورد نظر باشه تا کار کنه.

LiteSpeed Web Server (http://www.litespeedtech.com/error-page)

والله مشکلی با وردپرس روی همین سایت ندارم
من یه پوشه درست کردم فایل ها تو اون پوشه هست

AtrafNet
January 17th, 2017, 12:57
LiteSpeed Web Server (http://www.litespeedtech.com/error-page)

والله مشکلی با وردپرس روی همین سایت ندارم
من یه پوشه درست کردم فایل ها تو اون پوشه هست

شما اسم فایل رو abc.php گذاشتید تو این کد htaccess. هر دو جا رو ویرایش کردی؟



<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^abc\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /abc.php [L]
</IfModule>


بعدش خوب شد گفتید که تو پوشه همین بهتره که تو پوشه باشه و فایل htaccess. این با فایل htaccess. وردپرس یا کلاً بخش های دیگه سایت جدا باشه.

- - - Updated - - -

البته الان متوجه شدم چون فایل شما تو پوشه است فکر کنم خط سوم این کد یعنی RewriteBase / رو باید حذف کنید که منم از کد بالا حذف کردم.

iroo
January 17th, 2017, 12:58
آقا روی دامنه دیگه و ایندکسش درست کار کردم

حله ، فدایی داری به مولا دست خوش

iroo
January 19th, 2017, 11:35
ممنون بابت دوستان برای راهنمائی

حالا میخوام به کد بالا یک موردی رو اضافه کنم

مثلا یه سابدامینی هم باشه مثل dl

dl.exp.com/asdad/asdad/asasd.zip

میخوام وقتی کاربر به این آدرس مراجعه کرد، من فایل زیر رو براش برای دانلود ارائه کنم

dl.exp22222.com/asdad/asdad/asasd.zip

تو فایل htaccess باید اجرا بشه، ممنون میشم کمکم کنید