ورود

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



<?php?>
April 30th, 2016, 20:57
میخوام url هر پست cms که دارم مینویسم به این شکل بشه :

site.com/دانلود_آهنگ_جدید

فعلا url های cms به این شکل هست :

site.com/post.php?id=45

به نظرتون باید چیکار کنم تا به شکل بالا تبدیل بشه ؟ از Htaccess باید استفاده بشه؟
منبع آموزش فارسی دارید برای این کار یا خودتون میتونید راهنماییم کنید ؟ ممنون

T.Toosi
April 30th, 2016, 21:08
http://blogs.shephertz.com/2014/05/21/how-to-implement-url-routing-in-php/

miladtnt
April 30th, 2016, 21:34
توصیه میشه یه از یه کد ادماده برای روتینگ سی ام استون استفاده کنین ! htaccess برا سی ام اس توصیه نمیشه ! تو داکیومنتیشن های خارجی بگردید این بحث یکم سطح بالا هست

shahinmq
April 30th, 2016, 22:34
درود .

اگر خودتون در حال برنامه نویسی هستید توصیه می کنم در htaccess این کد را قرار بدید :



<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [PT,L]
</IfModule>


حال تمام درخواست ها به صورت get با آفست url به index.php ارسال می شه.

حال شما می تونید با استفاده از $_GET['url'] و با استفاده از explode لینک های خودرا مدیریت کنید.

<?php?>
April 30th, 2016, 23:03
توصیه میشه یه از یه کد ادماده برای روتینگ سی ام استون استفاده کنین ! htaccess برا سی ام اس توصیه نمیشه ! تو داکیومنتیشن های خارجی بگردید این بحث یکم سطح بالا هست

چرا htaccess برای cms توصیه نمیشه؟ مشکل کندی اسکریپت پیدا میکنه؟ امنیتش؟
ممنون

- - - Updated - - -


درود .

اگر خودتون در حال برنامه نویسی هستید توصیه می کنم در htaccess این کد را قرار بدید :



<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [PT,L]
</IfModule>


حال تمام درخواست ها به صورت get با آفست url به index.php ارسال می شه.

حال شما می تونید با استفاده از $_GET['url'] و با استفاده از explode لینک های خودرا مدیریت کنید.

فایلی که گفتیدو تو روت لوکال هاستم ساختم ( جایی که پوشه cms هست )
ولی وقتی وارد صفحه های سایتم شدم تغییری اعمال نشد ؟ رو لوکال اجرا میشه اصلا؟

این قسمت از پستتونو قشنگ متوجه نشدم :
حال شما می تونید با استفاده از $_GET['url'] و با استفاده از explode لینک های خودرا مدیریت کنید.
میشه یکم توضیح بدید

- - - Updated - - -


http://blogs.shephertz.com/2014/05/21/how-to-implement-url-routing-in-php/

تو لوکال هاست این گزینه فعاله؟
First of all, make sure you have installed and enabled rewrite module in Apache’s configuration

miladtnt
April 30th, 2016, 23:10
نه زیاد بحث کندیش مطرح نیست اونوقت باید تو سی ام استون بخشی بزارید مثل وردپرس که کاربر انتخاب کنه پستاشو چجور نمایش بده و input فیلد براش بزارید ک ب سلیقه خودش بزاره اخرشم تنظیماتو با تابعای php تو htaccess بریزه و تنظیمات قبلیو ازش پاک کنه (اینجاش یکم جای فکر داره) اینا همش ب کنار

فک کنم یه باگ یا مشکلی تو ویرایش فایل هایی که نقطه دارن اولشون(مخفین) هست ک ی زمانی وردپرسم این مشکلو داشت

استفاده از روتینگ ها استاندارد ترم هس

- - - Updated - - -

تو لوکال هاست فک کنم تو xampp فعال باشه

T.Toosi
April 30th, 2016, 23:21
از هر جایی هاست میزبانی تهیه کنید rewrite module فعال هست اگر در لوکال کار میکنید باید فعال یا نصب کنید به طور مثال در xamp دیفالت ماژول فعال نیست.

<?php?>
May 1st, 2016, 00:54
داخل htaccess اینو نوشتم و الان لینک های سایت این شکلی شدن :
site.com/post.php?id=30 -----> site.com/post/30
مشکل فعلیم اینه که با هر دو url صفحه پست بالا میاد :) .
چیکار کنم که آدرس site.com/post.php?id=30 از بین بره کلا و هیچی بالا نیاد باهاش >؟



RewriteEngine On

RewriteRule ^post/([0-9a-zA-Z]+)/?$ post.php?id=$1

T.Toosi
May 1st, 2016, 01:27
یک راهش اینه شما با RewriteCond شرط بگذارید اگر post.php?id=30 باز کردند به صفحه اصلی هدایت شوند :


RewriteCond %{REQUEST_URI} ^/post\.php\?id=/([0-9a-zA-Z]+)$ [NC,OR]
RewriteRule . index.php [NC]

<?php?>
May 1st, 2016, 01:34
یک راهش اینه شما با RewriteCond شرط بگذارید اگر post.php?id=30 باز کردند به صفحه اصلی هدایت شوند :


RewriteCond %{REQUEST_URI} ^/post\.php\?id=/([0-9a-zA-Z]+)$ [NC,OR]
RewriteRule . index.php [NC]

کار نمیکنه این دستور . یعنی کار میکنه ولی اون چیز که میخوام نشد

shahinmq
May 1st, 2016, 01:35
فایلی که گفتیدو تو روت لوکال هاستم ساختم ( جایی که پوشه cms هست )
ولی وقتی وارد صفحه های سایتم شدم تغییری اعمال نشد ؟ رو لوکال اجرا میشه اصلا؟

این قسمت از پستتونو قشنگ متوجه نشدم :
حال شما می تونید با استفاده از $_GET['url'] و با استفاده از explode لینک های خودرا مدیریت کنید.
میشه یکم توضیح بدید


قبل از پاسخ به سوالتون ، از معماری MVC استفاده می کنید یا خیر ؟

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

اول برای استفاده از اون کد htaccess لازم هستش که rewrite فعال باشه ، در صورتی که از لوکال استفاده می کنید از httpd.conf دنبال LoadModule rewrite_module modules/mod_rewrite.so بگردید و درصورتی که کنار آن # (هشتگ) بود ، آنرا بردارید و ذخیره کنید و در نهایت xampp یا wamp را restart کنید.

حال طبق همون دستور htaccess ، فرضا اگر آدرس ما چنین باشد : test.com/news/5 ، این قسمت یعنی news/5 به صورت get به index.php ارسال میشه و اگر $_GET['url'] را echo کنید ، به شما news/5 نمایش داده خواهد شد.

حال با استفاده از explode می تونیم news/5 را به آرایه تبدیل کنیم ( به صورت مجزا یعنی آرایه شماره 0 برابر با news و آرایه شماره 1 برابر با 5)

حال می تونیم طوری برنامه را بنویسیم که اگر آرایه 0 news بود ، بره فایل های مربوط به اخبار را در index فراخوانی کنه و آیدی شماره 5 را از دیتابیس بیاره.

miladtnt
May 1st, 2016, 02:08
کار نمیکنه این دستور . یعنی کار میکنه ولی اون چیز که میخوام نشد

99% احتمال میدم یا این بخشو کامل درست نمیکنین یا از htaccess استفاده نمیکنین :)

استفاده از چنتا کلاس اماده روتینگ خیلی راحت تره